我目前正在用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
。我正在考虑在请求正文中发送参数以过滤列表。这是因为我希望能够指定复杂的过滤器而无需获取超长网址,例如:
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。