播放2.3:RESTful API,无效的Json Html

时间:2015-03-20 04:29:01

标签: java json rest playframework-2.0 body-parser

为什么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);
    }
}

1 个答案:

答案 0 :(得分:0)

您必须在全局

中定义onBadRequest

的src: https://www.playframework.com/documentation/2.3.x/JavaGlobal