2

我正在使用 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,不支持的媒体类型?

有没有办法改变这种行为?

4

1 回答 1

3

您可以使用 status(int, String) 方法返回自定义 HTTP 响应:

return status(415, "The only supported content type is application/json");
于 2013-10-06T10:09:31.180 回答