为什么Play想要发送一个html错误页面来发送没有有效json的请求,而不是让控制器让action方法处理它?我正在尝试编写一个返回Json响应的RESTful服务,这个问题是一个阻塞程序。
我尝试使用提供的BodyParser注释:BodyParser.TolerantJson.class
@BodyParser.Of(value = BodyParser.TolerantJson.class, maxLength = 2 * 1024)
应该忽略在内容类型的标题中发送的内容,并允许在操作方法中处理它,但似乎没有。这是一个错误吗?我可以将标题内容类型设置为文本,它将允许无效的json(我可以,但我不想让客户这样做,我不想忽略json标头,因为它应该被发送。< / p>
我得到的回复是一个带有文字的HTML页面:
For request 'POST /api/v1/create' [Invalid Json]
如果它有用,这里是Java代码:
@BodyParser.Of(value = BodyParser.TolerantJson.class, maxLength = 2 * 1024) //2KB
public static Result create() {
//none of this code executes when the header is json
PojoApiResponse response;
JsonNode body = request().body().asJson();
response = XternalPartnerApiService.create(body);
JsonNode ret = Json.toJson(response);
if(response.getHttpStatus() == Http.Status.BAD_REQUEST){
return badRequest(ret);
} else {
return ok(ret);
}
}
答案 0 :(得分:0)
您必须在全局
中定义onBadRequest的src: https://www.playframework.com/documentation/2.3.x/JavaGlobal