我正在使用Play創建RESTful服務。我希望Play在請求標題中拒絕媒體類型未指定爲JSON的任何請求。Play Framework:返回400而不是415
那裏的教程有一個很好的例子。 http://www.playframework.com/documentation/2.0/JavaJsonRequests
閱讀的地方說......
@BodyParser.Of(Json.class)
public static index sayHello() {
String name = json.findPath("name").getTextValue();
if(name == null) {
return badRequest("Missing parameter [name]");
} else {
return ok("Hello " + name);
}
}
注:這樣一來,一個400 HTTP響應將自動返回非JSON請求。
爲什麼它返回HTTP錯誤400,錯誤的請求,而不是HTTP錯誤415,不支持的媒體類型?
有沒有辦法改變這種行爲?
我不知道,如果他們談論的標題或內容。如果頭部設置爲json,但內容爲另一種格式,則400響應看起來很好。如果它是關於標題而不是你說得對,415似乎更合適。你測試過了,看到了錯誤的迴應嗎?如果是的話,如果還沒有,你可以提交一個錯誤報告。 – Kapep
Kapep的澄清請求是一個很好的要求。如果您在請求中將「Content-header」設置爲「application/json」,並且您收到了400有效json **的400,那麼您在BodyParser中間件中發現了一個錯誤。如果您的JSON格式不正確或標題未發送,則400可以。一個可能的解決方法是可能爲body構建您自己的JSON解析註釋(也許通過擴展現有的bodyparser),儘管這看起來像是矯枉過正。 –
我想我總是得到400讓我檢查。非常感謝。 –