设置HTTP状态代码和自定义状态消息,并在Restful服务中使用Jersey返回JSON输出



我已经使用泽西岛实施了一项RESTFUL服务。我能够以JSON格式返回所需的输出。但是,我还需要设置HTTP状态代码和我的自定义状态消息。状态代码和状态消息不应是JSON输出的一部分。

我尝试了以下链接:

  1. jax/jersey自定义错误代码
  2. JAX-RS - 如何一起返回JSON和HTTP状态代码?
  3. 使用JAX-RS(泽西岛)和@RolesAllowed自定义HTTP状态响应

,但我只能执行其中一项任务,即返回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; 
}
}

任何人都可以为此提供解决方案吗?

错误是:
1.如果将状态设置为no_content(http204),则规范是要使实体空。因此,将以空的方式将实体退还给您的客户。这不是您想做的所有情况,如果找到的返回详细信息,如果找不到的话,返回404。

2.produces({MediaType.Application_json})告诉您您将返回JSON内容,并且实体的内容不是JSON。您将不得不退还JSON。您会看到我用杰克逊作为球衣的一部分。

  1. 设置一个@path("/user"),至少在资源级别设置端点路径。需要设定一条路径以使您的资源(端点)

  2. 使用bean传递多个东西。我为您做了一个示例bean。

  3. 作为http返回的改进小心,请使用适当的一个404:找不到资源204:空...看看标准:http://www.wikiwand.com/en/list_of_http_status_codes

查看GIST中的完整代码:https://gist.github.com/jeorfevre/260067c5b265f65f65f93b3

享受:)

最新更新