저는 RESTful 저지의 초보자입니다. 저지 @PathParam
와 @QueryParam
저지 의 차이점은 무엇 입니까?
답변
쿼리 매개 변수는 ?
마크 뒤의 URL에 추가되고 경로 매개 변수는 일반 URL의 일부입니다.
아래 URL tom
에는 경로 매개 변수의 값이있을 수 있으며 이름 id
과 값 이있는 하나의 쿼리 매개 변수가 있습니다 1
.
http://mydomain.com/tom?id=1
답변
@Ruben이 제공 한 위의 설명과 함께 Spring RESTFull 구현에서 동일한 내용을 참조 할 수도 있음을 추가하고 싶습니다.
JAX- RS 사양 @PathParam-URI 템플릿 매개 변수 또는 템플릿 매개 변수를 포함하는 경로 세그먼트의 값을 리소스 메서드 매개 변수, 리소스 클래스 필드 또는 리소스 클래스 빈 속성에 바인딩합니다.
@Path("/users/{username}")
public class UserResource {
@GET
@Produces("text/xml")
public String getUser(@PathParam("username") String userName) {
...
}
}
@QueryParam-HTTP 쿼리 매개 변수의 값을 리소스 메서드 매개 변수, 리소스 클래스 필드 또는 리소스 클래스 빈 속성에 바인딩합니다.
URI : users / query? from = 100
@Path("/users")
public class UserService {
@GET
@Path("/query")
public Response getUsers(
@QueryParam("from") int from){
}}
Spring을 사용하여 동일한 결과를 얻으려면 다음을 사용할 수 있습니다.
@PathVariable (Spring) == @PathParam (저지, JAX-RS),
@RequestParam (Spring) == @QueryParam (저지, JAX-RS)
답변
또한 쿼리 매개 변수는 null 일 수 있지만 경로 매개 변수는 할 수 없습니다. 경로 매개 변수를 추가하지 않으면 404 오류가 발생합니다. 따라서 데이터를 필수로 전송하려는 경우 경로 매개 변수를 사용할 수 있습니다.
답변
@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) {
...
}
}