Obecnie projektuję i wdrażam API RESTful w PHP. Jednak nie udało mi się wdrożyć mojego początkowego projektu.
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
Jak dotąd dość standardowy, prawda?
Mój problem dotyczy pierwszego GET /users
. Zastanawiałem się nad przesłaniem parametrów w treści żądania w celu przefiltrowania listy. Jest tak, ponieważ chcę móc określić złożone filtry bez uzyskiwania bardzo długiego adresu URL, na przykład:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
Zamiast tego chciałem mieć coś takiego:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
który jest znacznie bardziej czytelny i daje ogromne możliwości ustawienia złożonych filtrów.
W każdym razie file_get_contents('php://input')
nie zwrócił treści GET
żądania. Próbowałem też http_get_request_body()
, ale hostowanie współdzielone, którego używam, nie ma pecl_http
. Nie jestem pewien, czy i tak by to pomogło.
Znalazłem to pytanie i zdałem sobie sprawę, że GET prawdopodobnie nie powinien mieć treści żądania. To było trochę nieprzekonujące, ale odradzali to.
Więc teraz nie jestem pewien, co robić. Jak zaprojektować funkcję wyszukiwania / filtrowania RESTful?
Myślę, że mógłbym użyć POST
, ale to nie wydaje się bardzo ODPOCZNE.