Ich bin gerade dabei, eine RESTful API in PHP zu entwerfen und zu implementieren. Allerdings ist es mir nicht gelungen, meinen ursprünglichen Entwurf zu implementieren.
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
So weit, so normal, nicht wahr?
Mein Problem ist der erste Punkt GET /users
. Ich habe in Erwägung gezogen, Parameter im Anfragetext zu senden, um die Liste zu filtern. Der Grund dafür ist, dass ich in der Lage sein möchte, komplexe Filter zu spezifizieren, ohne eine super lange URL zu erhalten, wie z. B.:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
Stattdessen wollte ich etwas haben wie:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
die viel besser lesbar ist und Ihnen großartige Möglichkeiten bietet, komplexe Filter zu setzen.
Wie auch immer, file_get_contents('php://input')
nicht den Request Body für GET
Anfragen. Ich habe auch versucht http_get_request_body()
aber das Shared Hosting, das ich benutze, hat keine pecl_http
. Ich bin mir nicht sicher, ob es überhaupt etwas gebracht hätte.
Ich fand diese Frage und erkannte, dass GET wahrscheinlich keinen Request Body haben sollte. Es war nicht ganz schlüssig, aber sie rieten davon ab.
Jetzt bin ich nicht sicher, was ich tun soll. Wie entwirft man eine RESTful-Such-/Filterungsfunktion?
Ich nehme an, ich könnte die POST
aber das scheint nicht sehr RESTful zu sein.