Tôi hiện đang thiết kế và triển khai API RESTful trong PHP. Tuy nhiên, tôi đã không thành công khi thực hiện thiết kế ban đầu của mình.
GET /users # list of users
GET /user/1 # get user with id 1
POST /user # create new user
PUT /user/1 # modify user with id 1
DELETE /user/1 # delete user with id 1
Cho đến nay khá chuẩn, phải không?
Vấn đề của tôi là với cái đầu tiên GET /users
. Tôi đã xem xét việc gửi các tham số trong cơ thể yêu cầu để lọc danh sách. Điều này là do tôi muốn có thể chỉ định các bộ lọc phức tạp mà không cần url siêu dài, như:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
Thay vào đó tôi muốn có một cái gì đó như:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
dễ đọc hơn nhiều và cung cấp cho bạn các khả năng tuyệt vời để đặt các bộ lọc phức tạp.
Dù sao, file_get_contents('php://input')
đã không trả lại cơ thể GET
yêu cầu cho các yêu cầu. Tôi cũng đã thử http_get_request_body()
, nhưng lưu trữ chia sẻ mà tôi đang sử dụng không có pecl_http
. Không chắc nó sẽ giúp được gì.
Tôi đã tìm thấy câu hỏi này và nhận ra rằng GET có lẽ không cần phải có một cơ quan yêu cầu. Đó là một chút không kết luận, nhưng họ khuyên chống lại nó.
Vì vậy, bây giờ tôi không biết phải làm gì. Làm thế nào để bạn thiết kế một chức năng tìm kiếm / lọc RESTful?
Tôi cho rằng tôi có thể sử dụng POST
, nhưng điều đó không có vẻ rất RESTful.