2012-08-15 108 views
13

我正在處理客戶端和服務器應用程序,並遇到了一個有趣的問題。我們正在創建一個穩定的API並使用JSON響應與客戶端進行通信。當做一個DELETE時,我們返回一個空的響應200 OK。我們的客戶正在獲得200 OK,但無法解析JSON。響應中的有效JSON

我們完全理解失敗的解析(沒有什麼可解析的),但我們有一個更大的問題。是發送一個空白的響應有效的JSON,或者我們應該返回{}或這個效果?謝謝。

回答

12

HTTP/1.1 definition關於DELETE方法:

成功的響應應該是200(OK)如果所述響應包括描述其狀態, 實體202(已接受)如果動作尚未 一直如果該行爲已頒佈,則返回204或204(無內容),但響應中不包含實體。

所以,如果你的服務器被立即刪除的項目,然後建議的答覆是:

  • 200 OK - 返回某種狀態代碼(如一個true或字符串說:「成功「)
  • 204無內容 - 返回任何結果,並且讓您的客戶看出來的這種反應,而不是試圖JSON解析,同時還知道請求是成功的
+3

回覆:空白響應是否爲「有效的JSON」 - [json.org](http://json.org/)中的定義表明JSON值可以是「雙引號中的一個字符串,或者是一個數字,或者是真或false或null,或者一個對象或數組「。因此,除非「有效的JSON」和「有效的JSON值」之間存在某種哲學差異,否則我會說空白的響應不是有效的JSON。 – cloudfeet 2012-08-15 15:02:16

7

只是在這裏做一個快速測試:http://jsonlint.com/顯示空白不是有效的JSON,而{}是有效的JSON。

+0

是的,我已經看到了JSON解析器這樣的,在客戶端。我想知道的問題是,如果一個空白的響應是一個有效的JSON(在HTTP/JSON協議意義上)或者只是不能被解析。 – 2012-08-15 14:48:22