Наразі розробляю та впроваджую API RESTful у 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
, але це не здається дуже ВИПАДНИМ.