1

我在以下位置遇到了以下帖子

在 Java 中处理 URI(RESTful)中的多个参数

我只是好奇以下是有效资源吗?

@Path("Client/{client}/users")
public class UserPage 
{
@GET
@Produces(MediaType.TEXT_HTML)
public String userChoice(@PathParam(value = "client") final String client) 
{****Method here which handles a list of 'users'****}

@GET
@Path("{name}")
@Produces(MediaType.TEXT_HTML)
public String userPage(@PathParam(value = "client") final String client,  @PathParam(value = "name") final String name)
{****Method here which handles 'user' information****}}

我特别好奇 uri 会调用 userpage 方法的 {name} 方法吗?{} 在这里如何工作?我认为 {} 应该包含路径类的名称,例如,如果类的路径是“/Client”,那么它应该是 {client}。有什么建议么 ?想法??

4

1 回答 1

1

您定义的资源足够有效,但根据您要执行的操作的描述,您需要将源更改为如下所示:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/Client/{client}/users")
public interface UserPage {
   @GET
   @Produces(MediaType.TEXT_HTML)
   public String userChoice(@PathParam(value = "client") final String client);

   @GET
   @Path("/{name}")
   @Produces(MediaType.TEXT_HTML)
   public String userPage(@PathParam(value = "client") final String client,
         @PathParam(value = "name") final String name);
}

假设根 URI http://www.example.com:8080,那么以下情况成立:

  • 在http://www.example.com:8080/Clients/10/users上调用 GET将调用userChoice资源实现类上的方法。client的值为10
  • 在http://www.example.com:8080/Clients/10/users/Bob上调用 GET 将调用userPage资源实现类上的方法。client的值为10name ,的值为Bob

花括号语法用于包含定义路径参数值的正则表达式。另外,请注意,我在您的类级别路径中包含了一个前导斜杠 ('/') - 省略它会导致路径不匹配(在大多数情况下)。

于 2012-04-11T23:17:25.523 回答