Atualmente, estou projetando e implementando uma API RESTful em PHP. No entanto, não consegui implementar meu design 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
Até agora, bastante padrão, certo?
Meu problema é com o primeiro GET /users
. Eu estava pensando em enviar parâmetros no corpo da solicitação para filtrar a lista. Isso ocorre porque eu quero poder especificar filtros complexos sem obter um URL super longo, como:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
Em vez disso, eu queria ter algo como:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
o que é muito mais legível e oferece grandes possibilidades para definir filtros complexos.
De qualquer forma, file_get_contents('php://input')
não retornou o corpo da GET
solicitação. Eu também tentei http_get_request_body()
, mas a hospedagem compartilhada que estou usando não tem pecl_http
. Não tenho certeza de que teria ajudado de qualquer maneira.
Encontrei essa pergunta e percebi que o GET provavelmente não deveria ter um corpo de solicitação. Foi um pouco inconclusivo, mas eles desaconselharam.
Então agora não tenho certeza do que fazer. Como você cria uma função de pesquisa / filtragem RESTful?
Suponho que eu poderia usar POST
, mas isso não parece muito RESTful.