java - 如何在 Restful Java 服务中满足无效返回警告

标签 java warnings resteasy

Java 代码:

      @GET
      @Path("/stop/{id}")
      public void stop(
      @PathParam("id") String id,
      @Context HttpServletRequest request,
      @Context HttpServletResponse response) throws ServletException,
      IOException
      {
        server.stop(id);
      }

Java 警告被抛出到控制台:

警告:HTTP GET 方法,public void com.myPackage.stop(java.lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 抛出 javax.servlet.ServletException, java.io.IOException,必须返回非空类型。

最佳答案

你真的不应该使用 GET 操作。

我会使用 POST 操作并返回 201 Created,其中包含指向描述系统新状态的资源的链接。

例如,我会重定向到关闭状态资源:

POST /stop/123
...
201 CREATED
Location:
  http://acme.com/shutdownstatus/123

客户端可以轮询资源来检查状态

GET /shutdownstatus/123
...
<shutdown xmlns="http://schemas.serverapp.com/shutdown">
  <status>pending</status>
  <message>Looks good so far</message>
</shutdown> 

这个新的 GET 操作将始终返回该 ID 的服务器状态。这样你就知道它是否正确关闭了。如果服务器关闭需要很长时间,客户端可以轮询该资源以检查不同的关闭状态,直到它完成。这样您就可以快速从原始服务器关闭请求返回。

如果在您的流程中抛出异常,我不会将其返回给客户端,我会在服务器状态资源中获得异常状态。当我可以将其表示为资源时,我总是避免让客户端处理异常情况。这使您可以自由更改资源,例如在更改或修复导致异常的方法时,无需更改外部 API。

关于java - 如何在 Restful Java 服务中满足无效返回警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536753/

相关文章:

java - 计算两个 UML 模型之间的差异

javascript - 如何使用 Mustache 在服务器端显示 json 数组中的嵌套 json 对象

java - 递归搜索二叉树

jsp - 在 JSP 中是否有相当于 java @SuppressWarnings 的

objective-c - "sending ' 常量 NSString * ' to parameter of type ' NSString * ' discards qualifiers"警告

java - 输入流 = App.class.getResourceAsStream ("test.properties");

python - 警告 : Ignored class "Label" re-declaration

spring - REST API中基于 token 的身份验证

java - 如何将 RESTEasy 客户端代理与 MultipartFile 结合使用

java - jboss Resteasy参数注入(inject)@Context