我正在使用Play创建RESTful服务。我希望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);
}
}
注意:这样,对于非JSON请求,将自动返回400 HTTP响应。
为什么它返回HTTP错误400,错误请求,而不是HTTP错误415,不支持的媒体类型?
有没有办法改变这种行为?
答案 0 :(得分:2)
您可以使用status(int,String)方法返回自定义HTTP响应:
return status(415, "The only supported content type is application/json");