Java 使用两个参数实现RESTful web服务?

Java 使用两个参数实现RESTful web服务?,java,web-services,rest,jersey-1.0,Java,Web Services,Rest,Jersey 1.0,我正在编写RESTfulWeb服务。我有以下两种web方法 @Path("/persons") public class PersonWS { private final static Logger logger = LoggerFactory.getLogger(PersonWS.class); @Autowired private PersonService personService; @GET @Path("/{id}") @Produ

我正在编写RESTfulWeb服务。我有以下两种web方法

@Path("/persons")
public class PersonWS {
    private final static Logger logger = LoggerFactory.getLogger(PersonWS.class);

    @Autowired
    private PersonService personService;

    @GET
    @Path("/{id}")
    @Produces({MediaType.APPLICATION_XML})
    public Person fetchPerson(@PathParam("id") Integer id) {
        return personService.fetchPerson(id);
    }


}
现在我需要再写一个web方法,它接受两个参数,一个是id,另一个是name。它应该如下所示

public Person fetchPerson(String id, String name){

}
如何为上述方法编写web方法


谢谢

您有两个选择—可以将它们都放在路径中,也可以将其中一个作为查询参数

i、 e.您希望它看起来像:

/{id}/{name}

对于第一个问题,只需执行以下操作:

@GET
@Path("/{id}/{name}")
@Produces({MediaType.APPLICATION_XML})
public Person fetchPerson(
          @PathParam("id") Integer id,
          @PathParam("name") String name) {
    return personService.fetchPerson(id);
}

对于第二个,只需将名称添加为
RequestParam
。您可以将
PathParam
s和
RequestParam
s混合使用。

Tim,在第一种情况下,我是否需要将请求发送为:?谢谢是的..正确有没有办法通过下面的请求?somedomain.com/App/persons/2_somename?我从未尝试过它,但我希望@Path(“/{id}{name}”)能起作用。实际上,您最好使用a/尽管,因为这是人们所期望的,而且如果名称中有a/的话,它将被正确地转义。我不确定uu是否会。如果我使用@Path(“/{id}{name}”),那么我是否需要按u分割它并获取参数?谢谢不,您所做的唯一更改是在@Path中放置一个u而不是/。代码没有改变。
@GET
@Path("/{id}/{name}")
@Produces({MediaType.APPLICATION_XML})
public Person fetchPerson(
          @PathParam("id") Integer id,
          @PathParam("name") String name) {
    return personService.fetchPerson(id);
}