为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决 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 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信