Apa perbedaan antara @PathParam dan @QueryParam

100

Saya newbie di jersey RESTful. Saya ingin bertanya apa perbedaan antara @PathParamdan @QueryParamin jersey?

Mellon
sumber

Jawaban:

142

Parameter kueri ditambahkan ke url setelah ?tanda, sedangkan parameter jalur adalah bagian dari URL biasa.

Di URL di bawah ini tombisa menjadi nilai parameter jalur dan ada satu parameter kueri dengan nama iddan nilai 1:

http://mydomain.com/tom?id=1

Ruben
sumber
15

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)

JRishi
sumber
1

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.

hien.nguyen
sumber
0
    @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) {
        ...
        }
        }
natwar kumar
sumber