我刚刚意识到可以在我的 RESTful 资源 .java 文件中定义类似的内容:
@GET
@Produces("text/plain")
public String getPlainTextHello() { ... }
@GET
@Produces("application/json")
public String getJSONHello() { ... }
这不是很棒吗?但请稍等......
问题
我正在通过简单的客户端使用我的 API。在 HttpURLConnection
的帮助下,类似于此代码:
URL obj = new URL("http://some.url/res/hello");
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
conn.setRequestMethod("GET");
... /* get response ... conn.getInputStream() */
服务器如何“知道”调用哪一个方法来为客户端提供服务?
问候。
最佳答案
首先,您应该考虑对不同类型的“产品”使用相同的方法:
@GET
@Produces({ "application/xml", "text/plain"})
public String getHello() { ... }
不同类型的“产生”可以由 JAXB 处理(如果响应是一个对象......)。
您可以使用以下方法定义客户端“接受”mime 类型:
String uri =
"http://localhost:8080/hello/";
URL url = new URL(uri);
HttpURLConnection connection =
(HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");
此问题提供了与此问题相关的更多见解(以及其他客户端框架):REST. Jersey. How to programmatically choose what type to return: JSON or XML?
关于java - 不同 MIME 的多个 @GET - 如何使用普通的 HttpURLConnection() 来使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17864158/