我目前正在用PHP设计和实现一个RESTful API。然而,我一直没有成功地实现我的初始设计。
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
到目前为止都很标准,对吧?
我的问题是第一个GET /users
。我正在考虑在请求体中发送参数以过滤列表。这是因为我想要能够指定复杂的过滤器而不得到一个超长的url,如:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
相反,我想要这样的东西:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
这是更可读的,让你有很大的可能性来设置复杂的过滤器。
不管怎样,file_get_contents('php://input')
没有返回GET
请求的请求体。我还尝试了http_get_request_body()
,但我正在使用的共享主机没有pecl_http
。反正也不确定是否有用。
我找到了这个问题,并意识到GET可能不应该有请求体。这有点不确定,但他们建议不要这么做。
所以现在我不知道该怎么办。如何设计RESTful搜索/过滤功能?
我想我可以使用POST
,但这似乎不太RESTful。