В настоящее время я разрабатываю и внедряю RESTful API в PHP. Тем не менее, мне не удалось реализовать мой первоначальный дизайн.
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.