Я создаю службу RESTful с помощью Play. Я хочу, чтобы Play отклонял любой запрос, в котором тип мультимедиа не указан как JSON в заголовке запроса.
В учебнике есть хороший пример этого. 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);
}
}
Примечание. В этом случае HTTP-ответ 400 будет автоматически возвращен для запросов, отличных от JSON.
Почему он возвращает ошибку HTTP 400, неверный запрос, а не ошибку HTTP 415, неподдерживаемый тип носителя?
Есть ли способ изменить это поведение?
Content-header
в своем запросе наapplication/json
и получили 400 за допустимый json, значит, вы обнаружили ошибку в промежуточном программном обеспечении BodyParser. Если ваш JSON искажен или заголовок не отправлен, 400 в порядке. Возможное исправление состоит в том, чтобы, возможно, создать собственную аннотацию анализа JSON для тела (возможно, путем расширения существующего анализатора тела), хотя это кажется излишним. - person Ray Toal   schedule 06.10.2013