在 RESTful 服务中使用 Jersey 设置 Http 状态代码和自定义状态消息并返回 JSON 输出
Setting Http Status Code and customized status message and returning JSON output using Jersey in RESTful Service
我已经使用 Jersey 实现了 RESTful 服务。我能够以 JSON 格式 return 所需的输出。但是,我还需要设置 Http 状态代码和我的自定义状态消息。状态代码和状态消息不应是 JSON 输出的一部分。
我尝试了以下链接:
- JAX/Jersey Custom error code in Response
但我只能执行其中一项任务,returning 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. 如果 status 设置为 NO_content (HTTP204),规范是让一个实体为空。因此实体将 returned 对您的客户来说是空的。这不是你在所有情况下都想做的,如果找到 return 详细信息,如果找不到 return 404.
2.Produces( { MediaType.APPLICATION_JSON }) 表示您将 return 一个 json 内容,而实体的内容不是 json。你将不得不 return 一个 json。你会看到我使用 jackson,因为它是 Jersey 的一部分。
设置 @Path("/user") 以至少在资源级别设置端点路径。
需要设置路径以寻址您的资源(端点)
使用一个 bean 来传递多个东西。我已经为您制作了一个示例 bean。
作为改进 HTTP 的注意事项 return,请使用正确的
404:找不到资源
204:空....
看看标准:http://www.wikiwand.com/en/List_of_HTTP_status_codes
看看Gist中的完整代码:https://gist.github.com/jeorfevre/260067c5b265f65f93b3
尽情享受吧:)
我已经使用 Jersey 实现了 RESTful 服务。我能够以 JSON 格式 return 所需的输出。但是,我还需要设置 Http 状态代码和我的自定义状态消息。状态代码和状态消息不应是 JSON 输出的一部分。
我尝试了以下链接:
- JAX/Jersey Custom error code in Response
但我只能执行其中一项任务,returning 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. 如果 status 设置为 NO_content (HTTP204),规范是让一个实体为空。因此实体将 returned 对您的客户来说是空的。这不是你在所有情况下都想做的,如果找到 return 详细信息,如果找不到 return 404.
2.Produces( { MediaType.APPLICATION_JSON }) 表示您将 return 一个 json 内容,而实体的内容不是 json。你将不得不 return 一个 json。你会看到我使用 jackson,因为它是 Jersey 的一部分。
设置 @Path("/user") 以至少在资源级别设置端点路径。 需要设置路径以寻址您的资源(端点)
使用一个 bean 来传递多个东西。我已经为您制作了一个示例 bean。
作为改进 HTTP 的注意事项 return,请使用正确的 404:找不到资源 204:空.... 看看标准:http://www.wikiwand.com/en/List_of_HTTP_status_codes
看看Gist中的完整代码:https://gist.github.com/jeorfevre/260067c5b265f65f93b3
尽情享受吧:)