Attualmente sto progettando e implementando un'API RESTful in PHP. Tuttavia, non sono riuscito a implementare il mio progetto iniziale.
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
Finora piuttosto standard, giusto?
Il mio problema è con il primo GET /users
. Stavo valutando l'invio di parametri nel corpo della richiesta per filtrare l'elenco. Questo perché voglio essere in grado di specificare filtri complessi senza ottenere un URL super lungo, come:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
Invece volevo avere qualcosa di simile:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
che è molto più leggibile e ti dà grandi possibilità di impostare filtri complessi.
Comunque, file_get_contents('php://input')
non ha restituito il corpo della GET
richiesta per le richieste. Ho anche provato http_get_request_body()
, ma l'hosting condiviso che sto usando non ha pecl_http
. Non sono sicuro che avrebbe aiutato comunque.
Ho trovato questa domanda e mi sono reso conto che GET probabilmente non dovrebbe avere un corpo di richiesta. Era un po 'inconcludente, ma sconsigliarono.
Quindi ora non sono sicuro di cosa fare. Come si progetta una funzione di ricerca / filtro RESTful?
Suppongo che potrei usare POST
, ma questo non sembra molto RESTful.