Saya newbie di jersey RESTful. Saya ingin bertanya apa perbedaan antara @PathParam
dan @QueryParam
in jersey?
Parameter kueri ditambahkan ke url setelah ?
tanda, sedangkan parameter jalur adalah bagian dari URL biasa.
Di URL di bawah ini tom
bisa menjadi nilai parameter jalur dan ada satu parameter kueri dengan nama id
dan nilai 1
:
http://mydomain.com/tom?id=1
Bersamaan dengan klarifikasi di atas yang diberikan oleh @Ruben, saya ingin menambahkan bahwa Anda juga dapat merujuk yang sama dalam implementasi Spring RESTFull.
Spesifikasi JAX- RS @PathParam - Mengikat nilai parameter template URI atau segmen jalur yang berisi parameter template ke parameter metode sumber daya, bidang kelas sumber daya, atau properti kacang kelas sumber daya.
@Path("/users/{username}")
public class UserResource {
@GET
@Produces("text/xml")
public String getUser(@PathParam("username") String userName) {
...
}
}
@QueryParam - Mengikat nilai parameter kueri HTTP ke parameter metode sumber daya, bidang kelas sumber daya, atau properti kacang kelas sumber daya.
URI: users / query? From = 100
@Path("/users")
public class UserService {
@GET
@Path("/query")
public Response getUsers(
@QueryParam("from") int from){
}}
Untuk mencapai hal yang sama menggunakan Spring, Anda dapat menggunakan
@PathVariable (Musim Semi) == @PathParam (Jersey, JAX-RS),
@RequestParam (Musim Semi) == @QueryParam (Jersey, JAX-RS)
Selain itu, parameter kueri bisa nihil tetapi parameter jalur tidak bisa. Jika Anda tidak menambahkan parameter jalur, Anda akan mendapatkan kesalahan 404. Jadi Anda bisa menggunakan parameter path jika Anda ingin mengirim data sebagai wajib.
@javax.ws.rs.QueryParam
This annotation allows you to extract values from URI query parameters.
@javax.ws.rs.PathParam
This annotation allows you to extract values from URI template parameters.
PART-1 : @javax.ws.rs.PathParam
@Path("/mercedes")
public class MercedesService {
@GET
@Path("/e55/{year}")
@Produces("image/jpeg")
public Jpeg getE55Picture(@PathParam("year") String year) {
...
}
If I query the JAX-RS service with GET /mercedes/e55/2006, the getE55Picture()
method would match the incoming request and would be invoked.
PART-2 : @javax.ws.rs.QueryParam
URI might look like this: GET /cus?start=0&size=10
@Path("/cus")
public class GreedCorruption {
@GET
@Produces("application/xml")
public String getDeathReport(@QueryParam("start") int start,
@QueryParam("size") int size) {
...
}
}