我想返回一个JSON响应,而不是HTML。我不知道怎么困住它。例如,我将'play.http.parser.maxMemoryBuffer‘设置为1MB,如果请求正文超过1MB,它将返回一个JSON响应,而不是HTML格式,说明这是一个坏响应。
发布于 2020-03-25 02:49:31
根据JSON :要从HTML切换到the documentation响应,可以在application.conf中添加以下代码行
play.http.errorHandler = play.http.JsonHttpErrorHandler如果您还想自定义消息,则应将此行添加到application.conf
play.http.errorHandler = "com.example.ErrorHandler"显然,上面的代码行应该指向您自己的错误处理程序实现,可能如下所示:
package com.example
import play.http.HttpErrorHandler;
import play.mvc.*;
import play.mvc.Http.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import javax.inject.Singleton;
@Singleton
public class ErrorHandler implements HttpErrorHandler {
public CompletionStage<Result> onClientError(RequestHeader request, int statusCode, String message) {
if (statusCode == 413) {
return CompletableFuture.completedFuture(Results.status(statusCode, "A client error occurred: " + message + " The payload size should be lower than 1Mb."));
} else {
return CompletableFuture.completedFuture(Results.status(statusCode, "A client error occurred: " + message));
}
}
public CompletionStage<Result> onServerError(RequestHeader request, Throwable exception) {
return CompletableFuture.completedFuture(
Results.internalServerError("A server error occurred: " + exception.getMessage()));
}
}https://stackoverflow.com/questions/45069693
复制相似问题