2016-08-10 3 views
0

У меня есть api, который подвергается воздействию нескольких клиентов. Они все при запросе любого ресурса присылают мне «sourceId», через который я определяю, к какому клиенту приходит запрос:Передача параметра в тело запроса или заголовка запроса - какая разница, а также плюсы и минусы каждого?

Должен ли я принимать «sourceId» в теле или в заголовках? Как это повлияет на будущее?

Заголовки имеют больше смысла, поскольку это то, что оставалось бы статичным для конкретного клиента, но я не могу придумать вескую причину, как я могу решить, какой параметр отправить в теле и который в заголовках?

ответ

1

Для некоторых методов HTTP, такие как HEAD, GET и DELETE, полезная нагрузка запроса не имеют определенной семантики и отправить тело полезной нагрузки, по таким запросам могут вызвать некоторые существующие реализации отклонять запросы. Для получения дополнительной информации проверьте RFC 7231, текущую ссылку для семантики и содержимого в HTTP/1.1.

Отправка параметра в HTTP-заголовке должна работать для всех HTTP-методов.

Если идентификатор источника является ключом API или используется для аутентификации, его следует отправить в заголовок Authorization. Существует много API-интерфейсов, которые определяют пользовательские заголовки HTTP, такие как X-API-Key или X-Source-ID. Однако я бы этого не избежал.

+0

HTTP GET может иметь тело запроса, хотя это против цели GET. –

+0

Получил это. Но почему мы не можем «sourceid» как заголовок в GET, а для POST PUT DELETE мы можем иметь его в теле? – maverick

+0

@sahil Зачем вам это делать? Держите его равномерным. –

0

Основная причина, по которой он находится в заголовке, заключается в том, что не все методы отдыха имеют тело, например GET. В большинстве случаев данные, интересующие ваш запрос, будут находиться в теле, но информация о самом запросе будет в заголовках. Например, если вы хотите сообщить о своем источнике, то это будет либо в теле, либо как часть uri, но если sourceid - это просто способ аутентифицировать вызывающего абонента при запросе информации о чем-то еще, то он будет находиться в заголовки.

Смежные вопросы