亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解決 GETJson 口是心非的異常?

如何解決 GETJson 口是心非的異常?

心有法竹 2023-05-24 14:39:35
我正在用 java,netbeans 開發一個休息服務器。我創建了第一個 get 方法,我的類如下所示:@Stateless@Path("v1/cardapio")public class CardapioResource {    private Gson gson = new Gson();    @EJB    private CardapioRemote ejb;    public CardapioResource() {}    @GET    @Produces("application/json")    @Path("/")    public String getCardapios(@QueryParam("key") String key) {        Conta c = ContaDAO.busca(key);        JsonObject obj = new JsonObject();        if(c != null){            JsonArray array = (JsonArray) gson.toJsonTree(ejb.findAll());            obj.add("dados", array);        } else{            JsonObject status = new JsonObject();            status.addProperty("codigo", 401);            status.addProperty("mensagem", "N?o há nenhum ID correspondente a este KEY");            obj.add("status", status);         }        return obj.toString();    }    @GET    @Produces("application/json")    @Path("/")    public String getCardapios(@QueryParam("key") String key, @QueryParam("id") String id) {        // second method    }}上述方法負責驗證數據庫中的 fkey,如果有效則返回菜單列表。所以我嘗試使用第二種方法,獲取一個 id ...并在驗證后僅返回給定 id 的菜單。我的課看起來像這樣:@Stateless@Path("v1/cardapio")public class CardapioResource {    private Gson gson = new Gson();    @EJB    private CardapioRemote ejb;    public CardapioResource() {}    @GET    @Produces("application/json")    @Path("/")    public String getCardapios(@QueryParam("key") String key) {      // first method       }
查看完整描述

1 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

您的錯誤信息很明確:


這兩個方法產生和使用完全相同的 mime 類型,因此它們作為資源方法的調用總是會失敗


您收聽相同的路徑、相同的 HTTP 方法和輸入/輸出的 mime 類型。


您需要使它們不同,以便您的服務器可以清楚地決定調用哪個方法


例如,您可以將 an 添加id到第二種方法的路徑中。


@GET

@Produces("application/json")

@Path("/id")

public String getCardapios(@QueryParam("key") String key, 

                           @QueryParam("id") String id   ) {

...

}

但是如果你只想有一個路徑,你可以創建兩個業務方法,一個只處理 the key,另一個處理 thekey和 the id。


private void businessMethod1(String key) {

    // do your stuff

}


private void businessMethod2(String key, String id) {

    // do your stuff

}


@GET

@Produces("application/json")

@Path("/")

public String getCardapios(@QueryParam("key") String key, 

                           @QueryParam("id") String id   ) {

    if(id == null) {

        businessMethod1(key);

    } else {

        businessMethod2(key, id);

    }

}


查看完整回答
反對 回復 2023-05-24
  • 1 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號