RESTful forması giyen acemiyim. Ben arasında farklı nedir sormak istiyorum @PathParam
ve @QueryParam
Jersey'de?
Yanıtlar:
@Ruben tarafından sağlanan yukarıdaki açıklamanın yanı sıra, Spring RESTFull uygulamasında aynı şeyin eşdeğerine de başvurabileceğinizi eklemek istiyorum.
JAX- RS Spesifikasyonu @PathParam - Bir URI şablon parametresinin veya şablon parametresini içeren bir yol segmentinin değerini bir kaynak yöntemi parametresine, kaynak sınıfı alanına veya kaynak sınıfı bean özelliğine bağlar.
@Path("/users/{username}")
public class UserResource {
@GET
@Produces("text/xml")
public String getUser(@PathParam("username") String userName) {
...
}
}
@QueryParam - Bir HTTP sorgu parametresinin değerlerini bir kaynak yöntemi parametresine, kaynak sınıfı alanına veya kaynak sınıfı bean özelliğine bağlar.
URI: kullanıcılar / sorgu? From = 100
@Path("/users")
public class UserService {
@GET
@Path("/query")
public Response getUsers(
@QueryParam("from") int from){
}}
Spring'i kullanarak aynısını elde etmek için kullanabilirsiniz
@PathVariable (Spring) == @PathParam (Jersey, JAX-RS),
@RequestParam (Spring) == @QueryParam (Jersey, JAX-RS)
Ek olarak, sorgu parametresi boş olabilir ancak yol parametresi olamaz. Yol parametresini eklemezseniz, 404 hatası alırsınız. Bu nedenle, verileri zorunlu olarak göndermek istiyorsanız yol parametresini kullanabilirsiniz.
@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) {
...
}
}