Java 使用两个参数实现RESTful web服务?
我正在编写RESTfulWeb服务。我有以下两种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
@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);
}