猿问

如何解决 GETJson 口是心非的异常?

我正在用 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   

    }




心有法竹
浏览 85回答 1
1回答

精慕HU

您的错误信息很明确:这两个方法产生和使用完全相同的 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);    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答