Это обычная задача для HTTP API. Таким образом, есть два распространенных решения.
Возможно, наиболее распространенным является использование запроса POST
. В теле POST
запроса вы должны указать как тип запроса, который вы делаете, так и что вы запрашиваете. В запросе следует указать тип, поскольку POST
- это просто общий запрос о том, что сервер выполняет любое действие, указанное в полезной нагрузке.
Например:
POST /resources
Content-Type: application/json
{
"action": "get",
"ids": [
1,
2,
3
]
}
Другой вариант GET
запрос с телом. Запрос, скорее всего, будет выглядеть так же, как и в запросе POST
, приведенном выше, но без указания действия. Этот подход используется в таких проектах, как ElasticSearch . Спецификация HTTP является неопределенной в своем определении, когда речь идет о GET
запросах, имеющих тело (см. RF C 7231 ).
В частности, RF C говорит:
Полезная нагрузка в сообщении запроса GET не имеет определенной семантики; отправка тела полезной нагрузки по запросу GET может привести к тому, что некоторые существующие реализации отклонят запрос.
Хотя я не могу говорить за разработчиков ElasticSearch, я ожидаю, что последняя часть цитаты («некоторые существующие реализации [могут] отклонить запрос ") была одной из причин, по которой ElasticSearch принимает как GET
, так и POST
запросы для массовых запросов .