簡體   English   中英

如何使用“?”沒有得到路徑休息?

[英]How to use “?” no get Path Rest?

我正在用Java,Netbeans開發一個Rest服務器。 我有我的GET請求:

// myip / application / v1 / cardapio / 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 / cardapio /?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,找不到頁面。

你不能嗎? 簽名它的查詢參數而不是路徑參數

您可以使用@QueryParam("id")

您在“其他示例”中看到的只是URL查詢部分的正常用法。 只需將其與@Queryparam一起@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/並且您將嘗試從查詢字符串獲取id ,因此

Ex: //myip/application/v1/cardapio/?id=1

會工作。

您還可以使用@RequestParam("id") int id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM