ฉันเป็นมือใหม่ในเสื้อ RESTful ผมอยากจะขอให้สิ่งที่แตกต่างระหว่าง@PathParam
และ@QueryParam
ในเสื้อ?
ฉันเป็นมือใหม่ในเสื้อ RESTful ผมอยากจะขอให้สิ่งที่แตกต่างระหว่าง@PathParam
และ@QueryParam
ในเสื้อ?
คำตอบ:
พารามิเตอร์การสืบค้นจะถูกเพิ่มใน url หลัง?
เครื่องหมายในขณะที่พารามิเตอร์ path เป็นส่วนหนึ่งของ URL ปกติ
ใน URL ด้านล่างtom
อาจเป็นค่าของพารามิเตอร์เส้นทางและมีพารามิเตอร์การค้นหาหนึ่งรายการที่มีชื่อid
และค่า1
:
http://mydomain.com/tom?id=1
นอกเหนือจากคำชี้แจงข้างต้นที่จัดทำโดย @Ruben แล้วฉันต้องการเพิ่มว่าคุณยังสามารถอ้างอิงสิ่งเดียวกันในการใช้งาน Spring RESTFull ได้อีกด้วย
JAX- RS Specification @PathParam - ผูกค่าของพารามิเตอร์เทมเพลต URI หรือเซ็กเมนต์พา ธ ที่มีพารามิเตอร์เทมเพลตกับพารามิเตอร์วิธีรีซอร์สฟิลด์คลาสรีซอร์สหรือคุณสมบัติ bean คลาสทรัพยากร
@Path("/users/{username}")
public class UserResource {
@GET
@Produces("text/xml")
public String getUser(@PathParam("username") String userName) {
...
}
}
@QueryParam - ผูกค่าของพารามิเตอร์เคียวรี HTTP กับพารามิเตอร์วิธีรีซอร์สฟิลด์คลาสรีซอร์สหรือคุณสมบัติ bean คลาสรีซอร์ส
URI: ผู้ใช้ / แบบสอบถาม? จาก = 100
@Path("/users")
public class UserService {
@GET
@Path("/query")
public Response getUsers(
@QueryParam("from") int from){
}}
เพื่อให้ได้สิ่งเดียวกันโดยใช้ Spring คุณสามารถใช้
@PathVariable (ฤดูใบไม้ผลิ) == @PathParam (เจอร์ซีย์, JAX-RS),
@RequestParam (ฤดูใบไม้ผลิ) == @QueryParam (Jersey, JAX-RS)
นอกจากนี้พารามิเตอร์การสืบค้นสามารถเป็นค่าว่าง แต่พารามิเตอร์เส้นทางไม่สามารถ หากคุณไม่ต่อท้ายพารามิเตอร์ path คุณจะได้รับข้อผิดพลาด 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) {
...
}
}