有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java指向这些方法的uri是什么样子的

我在一家书店偶然发现了下面的帖子

Handling multiple parameters in a URI (RESTfully) in Java

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

@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****}}

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


共 (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);
    }
    

    假设根URIhttp://www.example.com:8080,则以下条件成立:

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

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