gpt4 book ai didi

dropwizard - 我希望 dropwizard 以 JSON 形式返回 HTTP 500 响应

转载 作者:行者123 更新时间:2023-12-02 15:23:32 26 4
gpt4 key购买 nike

我是 dropwizard 的新手。我正在使用 0.8.5 版的 dropwizard。我有一个 dropwizard REST 服务,它在调用成功时返回 JSON,在调用不成功时返回 HTTL,例如 HTTP 状态代码 500 或 404。

快乐之路

LOGGER.info("Cached userinfo for '{}'",username);
JSONObject json = new JSONObject();
json.put("ticketId",created.getTicketId());
json.put("token", token);
return Response.ok(json.toString()).build();

不快乐的路

if (created.getTicketId() == null) {
LOGGER.error("Email not sent, ticket not created");
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).type(MediaType.APPLICATION_JSON).build();
}

这是 curl :

curl -H "Content-Type: application/json" -X POST -d '{"username":"WPf3s0G1M"}' http://localhost:7777/ids-rest-api/password/reset

这是 curl 的回复,我想要 JSON 格式的回复:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Error 500 Request failed.</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /ids-rest-api/password/reset. Reason:
<pre> Request failed.</pre></p><hr><i><small>Powered by Jetty://</small> </i><hr/>

</body>
</html>

最佳答案

如果您向响应中添加一个实体,即使它是一个空的 JSON 对象,您的方法也会起作用

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/error")
@Produces(MediaType.APPLICATION_JSON)
public class BrokenResource {

@GET
public Response getServerError() {
return Response.serverError().entity("{}").build();
}
}

如果使用 @Produces(MediaType.APPLICATION_JSON) 注释方法或类,则可以删除明确声明类型以节省时间。

关于dropwizard - 我希望 dropwizard 以 JSON 形式返回 HTTP 500 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33023889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com