2014-02-24 31 views
4

我們正在構建公共RESTful JSON API並試圖找出指定屬性不存在時POST/PUT請求的最佳做法。我們應該拋出一個HTTP錯誤和哪一個或只是跳過它並應用所有其他屬性?當屬性不​​存在時,在REST JSON API上POST/PUT

{ 
    "name" : "Test", 
    "property_doesnt_exist" : "that's sad" 
} 

回答

4

對於服務器來說,一個常見的規則就是在你接受的內容中慷慨大方,並且對你的內容嚴格要求。

我寧願接受這樣的輸入,並儘可能地從中獲得。輸入的任何未知屬性都將被忽略。

4

HTTP 422:無法處理的實體

的422(無法處理的實體)狀態代碼表示的服務器理解的內容類型的請求實體(的因此一個415(不支持的媒體類型)狀態代碼是不合適),並且請求實體的語法是正確的(因此400(錯誤請求)狀態碼不合適),但無法處理包含的指令。例如,如果XML請求體包含格式正確(即,語法正確)但語義錯誤的XML指令,則可能會出現此錯誤情況。 RFC4918

通常的做法是不添加有效的消息屬性,如果消息也包含無效的屬性。

+0

我知道github跳過了inavlid參數。你知道背後有什麼想法嗎? – Max

+0

這種常見做法在哪裏? – 2014-02-24 11:22:49

+0

@LutzHorn在需要消息符合例如XML模式或某些消息描述。 – supertopi

0

回答這個問題時,你也必須考慮版本控制。你是否支持那些發送的參數比預期少的舊客戶端 - 這可以用合適的默認值工作。或者你是否有多個服務器實現,以便較新的客戶端會爲較舊的服務器實現發送太多參數?如果其中一個答案是肯定的,那麼你必須小心拒絕輸入。

相關問題