2012-07-27 116 views
21

我需要測試我的REST API後端接受JSON與高級REST客戶端或Postman for Chrome。如何使用Advanced REST Client或Postman測試Express/node REST API後端?

但我遇到的問題:我只能用發送請求的內置形式和使用內容類型:應用程序/ x-WWW窗體-urlencoded

但是這是不行的,因爲我有嵌入式documennts,例如我需要張貼這個

{title:"Awesome post!", tags: ["blue", "jeans"] } 

這是不可能的,無論是Chrome擴展的內置形式。

當我選擇Raw Body並在其中插入內容時,我的後端將req.body視爲一個空對象。當我還設置了頭「內容類型:應用程序/ JSON的」,我得到以下錯誤在我的後端:

SyntaxError: Unexpected token n 
at Object.parse (native) 
at IncomingMessage.exports.parse.application/json (/Library/WebServer/Documents/slipfeed/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:135:16) 
at IncomingMessage.EventEmitter.emit (events.js:85:17) 
at IncomingMessage._emitEnd (http.js:366:10) 
at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23) 
at Socket.socket.ondata (http.js:1682:22) 
at TCP.onread (net.js:404:27) 

注:我在我的應用程序的配置使用bodyParser()和methodOverride()。禁用它們並沒有幫助。

我應該使用什麼設置,以便我可以將JSON輸入到原始主體字段並且請求可以工作?

爲了澄清答案:我必須設置Content-Type:application/json(在請求標頭中)並使用格式良好的json,其中屬性名稱也在雙引號內以使其工作。

回答

27

嘗試在引號引起的字段屬性: {「稱號」:「真棒的帖子!」,「標籤」:「藍」,「牛仔褲」]}

+1

我試過了,我沒有得到一個錯誤,但req.body是空的 – ragulka 2012-07-27 13:38:35

+1

Actuall,這似乎是伎倆。我已經從標題中刪除了Content-Type:application/json。它現在的作品,輝煌:) – ragulka 2012-07-27 13:46:32

+0

@ragulka:你能告訴我你是如何做到的嗎?我添加了標題,但它仍然給我錯誤。另外,當我以「application/x-www-form-urlencoded」的形式發送兩個內容類型標題時, – Razort4x 2014-04-04 12:00:28