0
@Path("/hello")
    public class Hello {

     // This method is called if TEXT_PLAIN is request
      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String getfirstname() {
        return "Hello Maclean";
      }

     // This method is called if TEXT_PLAIN is request
      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String getlastname() {
        return "Hello Pinto";
      }
}

如上面的代码所示,有 2 个方法返回文本响应。如果我尝试

localhost:8080/RestAPI/rest/hello

总是第一个方法被调用。我阅读了一些文档并了解到 REST 将每个 URL 的资源视为唯一的。这是有效的吗?我知道我可以通过将查询参数发送到单个方法并在该方法内根据查询参数发送不同的响应来做到这一点。所以任何人都可以建议一种我可以通过 url 做到这一点的方法。没有添加查询参数和所有。

提前致谢。

4

2 回答 2

2

@Path除了类之外,您可能还想添加到您的方法中@Path,例如:

@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("firstname")
public String getfirstname() { ...

@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("lastname")
public String getlastname() { ...

它们可以通过以下方式访问:

localhost:8080/RestAPI/rest/hello/firstname
localhost:8080/RestAPI/rest/hello/lastname
于 2013-11-01T08:22:07.437 回答
1

嗯,这是真的。REST 通过 URL 和 HTTP 方法分派请求。

If you don't want to put query parameter for your case, you could use @Path on method.

@Path("/hello")
public class Hello {

 // This method is called if TEXT_PLAIN is request
  @GET
  @Path("/firstname")
  @Produces(MediaType.TEXT_PLAIN)
  public String getfirstname() {
    return "Hello Maclean";
  }

 // This method is called if TEXT_PLAIN is request
  @GET
  @Path("/lastname")
  @Produces(MediaType.TEXT_PLAIN)
  public String getlastname() {
    return "Hello Pinto";
  }
}
于 2013-11-01T08:22:53.997 回答