我使用Jersey实现了RESTful服务。我能够以JSON格式返回所需的输出。但是,我还需要设置Http状态代码和我的自定义状态消息。状态代码和状态消息不应该是JSON输出的一部分。
我尝试了以下链接:
但我只能执行其中一项任务,要么返回JSON,要么设置HTTP状态代码和消息。
我的代码如下:
import javax.ws.rs.core.Response;
public class MyClass(){
@GET
@Produces( { MediaType.APPLICATION_JSON })
public MyObject retrieveUserDetails()
{
MyObject obj = new MyObject();
//Code for retrieving user details.
obj.add(userDetails);
Response.status(Status.NO_CONTENT).entity("The User does not exist").build();
return obj;
}
}
任何人都可以为此提供解决方案吗?
答案 0 :(得分:0)
错误是:
1.如果status设置为NO_content(HTTP204),则规范是将实体设置为空。因此,实体将以空的形式返回给您的客户。这不是你想要做的所有情况,如果找到返回详细信息,如果没有找到返回404.
2.Produces({MediaType.APPLICATION_JSON})告诉您将返回json内容,并且实体的内容不是json。你将不得不返回一个json。你会看到我使用杰克逊作为泽西岛的一部分。
设置@Path(" / user")以至少在资源级别设置端点路径。 需要设置路径才能添加资源(端点)
使用bean来传递多个东西。我为你做了一个示例bean。
作为HTTP返回的改进注意事项,请使用正确的 404:找不到资源 204:空...... 看看规范:http://www.wikiwand.com/en/List_of_HTTP_status_codes
查看Gist中的完整代码:https://gist.github.com/jeorfevre/260067c5b265f65f93b3
享受:)