Actualmente estoy diseñando e implementando una API RESTful en PHP. Sin embargo, no he podido implementar mi diseño inicial.
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
Hasta ahora bastante estándar, ¿verdad?
Mi problema es con el primero GET /users
. Estaba considerando enviar parámetros en el cuerpo de la solicitud para filtrar la lista. Esto se debe a que quiero poder especificar filtros complejos sin obtener una URL muy larga, como:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
En cambio, quería tener algo como:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
que es mucho más legible y le brinda grandes posibilidades para configurar filtros complejos.
De todos modos, file_get_contents('php://input')
no devolvió el cuerpo de la GET
solicitud para las solicitudes. También lo intenté http_get_request_body()
, pero el alojamiento compartido que estoy usando no tiene pecl_http
. No estoy seguro de que hubiera ayudado de todos modos.
Encontré esta pregunta y me di cuenta de que GET probablemente no debería tener un cuerpo de solicitud. Fue un poco inconcluso, pero desaconsejaron.
Así que ahora no estoy seguro de qué hacer. ¿Cómo se diseña una función de búsqueda / filtrado RESTful?
Supongo que podría usar POST
, pero eso no parece muy RESTANTE.