【问题标题】:RESTeasy service input parameter is emptyRESTeasy 服务输入参数为空
【发布时间】:2017-05-22 04:55:39
【问题描述】:

我已经编写了下面的resteasy服务,并将来自rest URL的请求参数作为/{categoryId}输入到我的方法中作为String categoryID。

    @Path("/getArticlebyCat/{categoryID}")
    @PermitAll
    @GET
    @Produces("application/json")
    public Response searchArticleByCategoryID(String categoryID) {
        List<Article> articleList = new ArrayList();
        try {
            System.out.println("categoryID>>>"+categoryID);
            articleList = searchService.findArticleByCategoyID(categoryID);
        } catch (Exception e) {
            Logger.getLogger(RestServiceOne.class.getName()).log(Level.SEVERE, null, e);
            e.printStackTrace();
        }
        Response response = Response.status(Response.Status.OK).entity(articleList).build();
        return response;
    }

但是从服务日志中,我没有得到通过 rest 调用传递的 categoryID 值。它是空的。请帮我解决这个问题。 先感谢您 !

【问题讨论】:

    标签: java web-services rest resteasy


    【解决方案1】:

    @PathParam 是一个参数注释,允许您映射变量 URI 路径分段到您的方法调用中。

    所以你必须在这里使用@PathParamannotation。

    @Path("/getArticlebyCat/{categoryID}")
    @PermitAll
    @GET
    @Produces("application/json")
    public Response searchArticleByCategoryID(@PathParam("categoryID")String categoryID) {
    
    }
    

    More on Path Params

    【讨论】:

    • 谢谢,这个成功了!但我的问题是我还有一种类似的方法,没有@PathParam 注释,但它有效。你能告诉我这是如何工作的吗?
    • 请用那个方法更新问题,我可以调查一下
    【解决方案2】:

    能否请您也发布您的 URL,因为我可以看到您正在请求 get 方法,您应该使用类似 @PathParam(String categoryId) 的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 2018-04-04
      • 2019-01-02
      • 2014-12-04
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多