猿问

如何使用 ”?” 没有得到路径休息?

我正在用 java,netbeans 开发一个休息服务器。我有我的 GET 请求:


//myip/application/v1/menu/id=1


@Stateless

@Path("v1/cardapio")

public class CardapioResource {

        @GET

        @Produces("application/json")

        @Path("id={id}")

        public String getCardapio(@PathParam("id") int id) {


            JsonArray array = (JsonArray) gson.toJsonTree(ejb.findById(id));

            JsonObject obj = new JsonObject();

            obj.add("dados", array);

            return obj.toString();

        }

}

它工作正常。


但我想做不同的事情,正如我在其他示例中看到的那样,我想用“?”标记变量的开头。


例如://myip/application/v1/menu/?id=1


    @Stateless

    @Path("v1/cardapio")

    public class CardapioResource {

            @GET

            @Produces("application/json")

            @Path("?id={id}")

            public String getCardapio(@PathParam("id") int id) {


                JsonArray array = (JsonArray) gson.toJsonTree(ejb.findById(id));

                JsonObject obj = new JsonObject();

                obj.add("dados", array);

                return obj.toString();

            }

    }

因此错误 404,找不到页面。


阿晨1998
浏览 127回答 3
3回答

潇潇雨雨

您在“其他示例”中看到的只是 URL 查询部分的正常用法。只需将它与@Queryparam   @Stateless    @Path("v1/cardapio")    public class CardapioResource {            @GET            @Produces("application/json")            @Path("/") // can be removed actually            public String getCardapio(@QueryParam("id") int id) {                JsonArray array = (JsonArray) gson.toJsonTree(ejb.findById(id));                JsonObject obj = new JsonObject();                obj.add("dados", array);                return obj.toString();            }    }在这里你映射getCardapio到,你将尝试从查询字符串中v1/cardapio/获取idEx: //myip/application/v1/cardapio/?id=1会起作用的。

繁星coding

你不能,之后?签署它的查询参数而不是路径参数您可以使用@QueryParam("id")

慕标5832272

您也可以使用 @RequestParam("id") int id
随时随地看视频慕课网APP

相关分类

Java
我要回答