Ich entwerfe und implementiere derzeit eine RESTful-API in PHP. Es ist mir jedoch nicht gelungen, mein ursprüngliches Design 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
Soweit ziemlich normal, oder?
Mein Problem ist mit dem ersten GET /users
. Ich habe überlegt, Parameter im Anforderungshauptteil zu senden, um die Liste zu filtern. Dies liegt daran, dass ich in der Lage sein möchte, komplexe Filter anzugeben, ohne eine super lange URL zu erhalten, wie zum Beispiel:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
Stattdessen wollte ich so etwas haben wie:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
Das ist viel besser lesbar und bietet Ihnen großartige Möglichkeiten, komplexe Filter einzustellen.
Der Anfragetext file_get_contents('php://input')
für GET
Anfragen wurde sowieso nicht zurückgegeben . Ich habe es auch versucht http_get_request_body()
, aber das von mir verwendete Shared Hosting hat es nichtpecl_http
. Ich bin mir nicht sicher, ob es trotzdem geholfen hätte.
Ich fand diese Frage und stellte fest, dass GET wahrscheinlich keinen Anfragetext haben soll. Es war ein bisschen nicht schlüssig, aber sie rieten davon ab.
Jetzt bin ich mir nicht sicher, was ich tun soll. Wie entwirft man eine RESTful-Such- / Filterfunktion?
Ich nehme an, ich könnte es gebrauchen POST
, aber das scheint nicht sehr ruhig zu sein.