【问题标题】:Restlet Route Same API with Different HTTP MethodsRestlet 使用不同的 HTTP 方法路由相同的 API
【发布时间】:2018-11-28 16:10:05
【问题描述】:

我有 2 个 API 如下:

GET [baseURL]/user/{userID}
DELETE [baseURL]/user/{userID}

如何根据 restlet 中的 HTTP 方法正确路由它们?

这是我的代码不起作用 -

对于 GET-

Router rootRouter = new Router(getContext());
rootRouter.attach("/user/{userID}", GetUserRest.class);
rootRouter.setDefaultMatchingMode(Template.MODE_STARTS_WITH);
rootRouter.setRoutingMode(Router.MODE_LAST_MATCH);

删除-

Router rootRouter = new Router(getContext());
rootRouter.attach("/user/{userID}", CancelUserRest.class);
rootRouter.setDefaultMatchingMode(Template.MODE_STARTS_WITH);
rootRouter.setRoutingMode(Router.MODE_LAST_MATCH);

由于两者都附加了相同的 rootRouter 并且具有相同的 URL,因此restlet 不知道如果它的 GET 或 DELETE 调用哪个类。

【问题讨论】:

    标签: java restlet


    【解决方案1】:

    这里是解决方案-

    对两者使用相同的路由和相同的类。然后在课堂上为 GET 和 POST 加上注释。

    public class GetUserRest extends ServerResource{
        @Get @Delete
        public String getUser() throws ResourceException {
          if(getMethod().getName().equals("DELETE")) {
                return "delete method";
            } else if(getMethod().getName().equals("GET")) {
                return "get method";
            }
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      看起来您希望将 GET 和 DELETE 的实现保留在单独的类中,但将它们附加到 Router 中的相同 URL 模式。我已经看到了你的答案,但也请考虑一下这个解决方案,以防有人喜欢另一种方法:

      我知道解决这个问题的 1 种方法,创建 3 个类:UserUserGetUserDel

      rootRouter.attach("/user/{userID}", User.class);
      

      用户.java

      public class User
      {   @Get
          public Object getImpl()
          {   UserGet userGet = new UserGet();
              // init userGet
              return userGet.createResponse();
          }
          @Delete
          public Object delImpl()
          {   UserDel userDel = new UserDel();
              // init userDel
              return userDel.createResponse();
          }
      }
      

      我希望这个解决方案也能正常工作。

      【讨论】:

        猜你喜欢
        • 2023-04-10
        • 2016-05-02
        • 2017-04-15
        • 2014-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-01
        相关资源
        最近更新 更多