Câu trả lời:
Cùng với phần làm rõ ở trên do @Ruben cung cấp, tôi muốn nói thêm rằng bạn cũng có thể tham khảo tương tự như vậy trong triển khai Spring RESTFull.
Đặc tả JAX- RS @PathParam - Liên kết giá trị của tham số mẫu URI hoặc phân đoạn đường dẫn chứa tham số mẫu với tham số phương thức tài nguyên, trường lớp tài nguyên hoặc thuộc tính bean của lớp tài nguyên.
@Path("/users/{username}")
public class UserResource {
@GET
@Produces("text/xml")
public String getUser(@PathParam("username") String userName) {
...
}
}
@QueryParam - Liên kết (các) giá trị của tham số truy vấn HTTP với tham số phương thức tài nguyên, trường lớp tài nguyên hoặc thuộc tính bean của lớp tài nguyên.
URI: người dùng / truy vấn? From = 100
@Path("/users")
public class UserService {
@GET
@Path("/query")
public Response getUsers(
@QueryParam("from") int from){
}}
Để đạt được điều tương tự khi sử dụng Spring, bạn có thể sử dụng
@PathVariable (Spring) == @PathParam (Jersey, JAX-RS),
@RequestParam (Spring) == @QueryParam (Jersey, JAX-RS)
Ngoài ra, tham số truy vấn có thể là rỗng nhưng tham số đường dẫn thì không. Nếu bạn không nối tham số đường dẫn, bạn sẽ gặp lỗi 404. Vì vậy, bạn có thể sử dụng tham số đường dẫn nếu bạn muốn gửi dữ liệu là bắt buộc.
@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) {
...
}
}