RESTful:如何动态扩展API路径(或可用资源)?

时间:2013-07-25 15:25:50

标签: java web-services rest

我使用RESTful技术进行了很好的“骑行”。我正在使用这样的Hello.java资源:

@Path("/hello")
public class Hello {
    ... /* GET/PUT/POST */
}

有了这个,我可以使用路径http://my.host/res/hello访问我的资源。我想更加努力地“骑”RESTful。拥有这一条资源路径有点无聊。

问题

我想拥有一个动态创建的资源:

  • http://my.host/res/hello
  • http://my.host/res/hello/1
  • http://my.host/res/hello/2
  • ...
  • http://my.host/res/hello/999

为每个@Path("/hello/1") ... @Path("/hello/999")创建.java资源没有意义。对?可能这个子资源列表可能更大或动态地随时间变化。解决方案是什么?

感谢。

2 个答案:

答案 0 :(得分:7)

您可以对Resource类中的方法使用@Path注释。

@Path("/hello")
public class Hello {
    ... /* GET/PUT/POST */

    @GET
    @Path("{id}")
    public String myMethod(@PathParam("id") String id) {...}
}

路径将连接在一起,因此它将与/hello/13匹配。 {id}是输入实际值的占位符,可以使用@PathParam检索。在上一个URI中,字符串id的值为13

答案 1 :(得分:6)

您必须对REST URI使用PathParam功能。 http://docs.oracle.com/javaee/6/api/javax/ws/rs/PathParam.html

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

    }