Java REST API:从 API 方法返回多个对象
Java REST API: Returning Multiple objects from API Method
我正在尝试 return 从 Java REST API 方法在 Eclipse 中使用 JAX-RS 的多个对象(例如字符串、布尔值、MyOwnClass 等)。
这是我现在拥有的:
我的API方法
@Path("/")
public class myAPI {
@GET
@Produces({ "application/xml", "application/json" })
@Path("/getusers")
public Response GetAllUsers() {
//Data Type #1 I need to send back to the clients
RestBean result = GetAllUsers();
//Data Type #2 I need to send with in the response
Boolean isRegistered = true;
//The following code line doesn't work. Probably wrong way of doing it
return Response.ok().entity(result, isRegistered).build();
}
}
RestBean class:
public class RestBean {
String status = "";
String description = "";
User user = new User();
//Get Set Methods
}
所以我基本上发送两种数据类型:RestBean和Boolean。
发回包含多个数据对象的 JSON 响应的正确方法是什么?
首先,Java 约定是 class 名称以大写字母开头,方法名称以小写字母开头。跟随他们通常是个好主意。
您需要按照@Tibrogargan 的建议将您的回复包装在一个 class 中。
public class ComplexResult {
RestBean bean;
Boolean isRegistered;
public ComplexResult(RestBean bean, Boolean isRegistered) {
this.bean = bean;
this.isRegistered = isRegistered;
}
}
然后你的资源看起来像...
public Response getAllUsers() {
RestBean restBean = GetAllUsers();
Boolean isRegistered = true;
final ComplexResult result = new ComplexResult(bean, isRegistered);
return Response.ok().entity(Entity.json(result)).build();
}
然而,您真正需要知道的是您的回复文档应该看起来是什么样的。您只能有一个响应文档 - 这就是包装器的用途 - 包装器的序列化方式会影响文档各部分的访问方式。
注意 - 您的资源被列为能够生成 XML 和 JSON,而我所做的仅适用于 json。您可以让框架为您完成所有内容协商的繁重工作,这可能是个好主意,只需从方法返回文档类型而不是 Response
...
public ComplexResponse getAllUsers() {
...
return new ComplexResult(bean, isRegistered);
我正在尝试 return 从 Java REST API 方法在 Eclipse 中使用 JAX-RS 的多个对象(例如字符串、布尔值、MyOwnClass 等)。
这是我现在拥有的:
我的API方法
@Path("/")
public class myAPI {
@GET
@Produces({ "application/xml", "application/json" })
@Path("/getusers")
public Response GetAllUsers() {
//Data Type #1 I need to send back to the clients
RestBean result = GetAllUsers();
//Data Type #2 I need to send with in the response
Boolean isRegistered = true;
//The following code line doesn't work. Probably wrong way of doing it
return Response.ok().entity(result, isRegistered).build();
}
}
RestBean class:
public class RestBean {
String status = "";
String description = "";
User user = new User();
//Get Set Methods
}
所以我基本上发送两种数据类型:RestBean和Boolean。
发回包含多个数据对象的 JSON 响应的正确方法是什么?
首先,Java 约定是 class 名称以大写字母开头,方法名称以小写字母开头。跟随他们通常是个好主意。
您需要按照@Tibrogargan 的建议将您的回复包装在一个 class 中。
public class ComplexResult {
RestBean bean;
Boolean isRegistered;
public ComplexResult(RestBean bean, Boolean isRegistered) {
this.bean = bean;
this.isRegistered = isRegistered;
}
}
然后你的资源看起来像...
public Response getAllUsers() {
RestBean restBean = GetAllUsers();
Boolean isRegistered = true;
final ComplexResult result = new ComplexResult(bean, isRegistered);
return Response.ok().entity(Entity.json(result)).build();
}
然而,您真正需要知道的是您的回复文档应该看起来是什么样的。您只能有一个响应文档 - 这就是包装器的用途 - 包装器的序列化方式会影响文档各部分的访问方式。
注意 - 您的资源被列为能够生成 XML 和 JSON,而我所做的仅适用于 json。您可以让框架为您完成所有内容协商的繁重工作,这可能是个好主意,只需从方法返回文档类型而不是 Response
...
public ComplexResponse getAllUsers() {
...
return new ComplexResult(bean, isRegistered);