2013-12-23 36 views
4

我正在編寫Jersey RESTful Web服務。我有以下兩種網絡方法。使用兩個參數實現RESTful 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方法?

謝謝!

回答

16

你有兩種選擇 - 你可以把它們都放在路徑中,或者你可以有一個作爲查詢參數。

即你希望它看起來像:

/{id}/{name} 

/{id}?name={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。

+0

蒂姆,在第一種情況下,我是否需要發送請求爲:http://somedomain.com/App/persons/2/3?謝謝! – user755806

+0

是的,沒錯(假設你想讓id爲2,名字爲3)。 –

+0

是啊..有沒有什麼辦法可以像下面那樣傳遞請求? somedomain.com/App/persons/2_somename? – user755806