Как спроектировать RESTful поиск / фильтрацию? [закрыто]

В настоящее время я разрабатываю и внедряю 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.

404
задан Erik B 12 July 2019 в 13:39
поделиться