javax.ws.rs: 方法实际返回的是什么
javax.ws.rs: What is Actually Returned by a Method
正在研究 REST API。这个示例在这里工作正常,但我真的对这里的某些东西感到困惑。我的方法 getAll returns 一个字符串,但该方法已被注释为生成 JSON 的 MIME 媒体类型。我的问题是,最终返回的响应 (doc) 是一个 JSON 对象还是一个 json 字符串(因此是一个 JSON 格式的字符串)。以便我在收到响应时知道如何处理。
@Path("/membership/{pageNumber}")
@GET
@Produces("application/json")
public String getAll(@PathParam("pageNumber") String pageNumber){
Map<String , String > params = new HashMap<>();
String doc = HTTPClient.sendGet("localhost:9500/users/list/membership/field/"
+pageNumber, params, 60);
return doc;
}
这对我的文档也很有帮助。
感谢所有的努力,谢谢。
My question is , is the final returned response (doc) a JSONObject or
just a json String(Thus a String in JSON format)
是的,它会 return json String,如果你想一起发送 JSON 和 HTTP 状态,你可以使用 Response 作为您的 return 类型。
示例:
@GET
@Path("/testGet")
@Produces("application/json")
public Response testGet() {
String json = //Create JSON String
return Response.ok(json, MediaType.APPLICATION_JSON).build();
}
What is Actually Returned by a Method
正是你return。这是Java。这就是 Java 的工作原理。没有巫术。
也许您想知道其他事情。
所有响应都写入响应输出流。 return 类型是什么并不重要。重要的是有一个 MessageBodyWriter
知道如何根据 @Produces
内容类型将该类型写入输出流。如果 return 类型是一个字符串,那么就需要一个知道如何处理 String-application/json
组合的作者。如果 return 类型是 JSONObject
,那么需要有一个 writer 可以处理 that.
另请参阅: JAX-RS Entity Providers
客户端无需了解任何 Java 类型(即 Sting、JSONObect 等)。它获取字节流数据并使用它使用的任何转换方法转换数据。
你终于产生了一个 JSON 字符串。
建议使用实体而不是只返回字符串
return Response.ok().entity(doc).build();
正在研究 REST API。这个示例在这里工作正常,但我真的对这里的某些东西感到困惑。我的方法 getAll returns 一个字符串,但该方法已被注释为生成 JSON 的 MIME 媒体类型。我的问题是,最终返回的响应 (doc) 是一个 JSON 对象还是一个 json 字符串(因此是一个 JSON 格式的字符串)。以便我在收到响应时知道如何处理。
@Path("/membership/{pageNumber}")
@GET
@Produces("application/json")
public String getAll(@PathParam("pageNumber") String pageNumber){
Map<String , String > params = new HashMap<>();
String doc = HTTPClient.sendGet("localhost:9500/users/list/membership/field/"
+pageNumber, params, 60);
return doc;
}
这对我的文档也很有帮助。 感谢所有的努力,谢谢。
My question is , is the final returned response (doc) a JSONObject or just a json String(Thus a String in JSON format)
是的,它会 return json String,如果你想一起发送 JSON 和 HTTP 状态,你可以使用 Response 作为您的 return 类型。
示例:
@GET
@Path("/testGet")
@Produces("application/json")
public Response testGet() {
String json = //Create JSON String
return Response.ok(json, MediaType.APPLICATION_JSON).build();
}
What is Actually Returned by a Method
正是你return。这是Java。这就是 Java 的工作原理。没有巫术。
也许您想知道其他事情。
所有响应都写入响应输出流。 return 类型是什么并不重要。重要的是有一个 MessageBodyWriter
知道如何根据 @Produces
内容类型将该类型写入输出流。如果 return 类型是一个字符串,那么就需要一个知道如何处理 String-application/json
组合的作者。如果 return 类型是 JSONObject
,那么需要有一个 writer 可以处理 that.
另请参阅: JAX-RS Entity Providers
客户端无需了解任何 Java 类型(即 Sting、JSONObect 等)。它获取字节流数据并使用它使用的任何转换方法转换数据。
你终于产生了一个 JSON 字符串。
建议使用实体而不是只返回字符串
return Response.ok().entity(doc).build();