Я работаю над набором веб-сервисов для мобильного клиента, и требования требуют, чтобы уникальный идентификатор устройства был включен во все запросы, сохранялся в определенных запросах и использовался для фильтрации результатов в других.
Было предложено поместить его в настраиваемый заголовок HTTP, поскольку он будет включен во все запросы, поэтому я начал задаваться вопросом, какие критерии можно использовать для определения того, принадлежит ли данный фрагмент данных в заголовок или наряду с другими данными в тело запроса.
Есть ли такие критерии?
http
http-request
Майк Партридж
источник
источник
Ответы:
Когда информация важна, вы должны поместить ее в организм.
Почему?
источник
Хотя строка несколько размыта, для меня эмпирическое правило таково: данные, над которыми работает ваша бизнес-логика, должны быть в теле, метаданные могут / должны быть помещены в заголовки.
Другой способ взглянуть на это: данные, которые появляются только в определенных видах запросов, должны быть в теле, а данные, которые обрабатываются последовательно во всем приложении, должны попадать в заголовки.
Еще одна точка зрения такова: можете ли вы представить, что часть данных обрабатывается глобально, например, маршрутизатором / брандмауэром, а не вашим приложением? Если да, то, вероятно, он должен идти в заголовках, а не в теле.
Вот некоторые примеры применения этих правил:
Возвращаясь к вашему вопросу об уникальном идентификаторе устройства: если оно используется повсеместно, например, только для ведения журнала, его можно поместить в заголовки. Но если он используется для фильтрации запросов по-разному в зависимости от конечной точки, он лучше будет в теле. Конечно, если у вас есть оба варианта использования, вероятно, лучше придерживаться только одного способа его передачи (возможно, заголовков), а не заставлять пользователя API размещать одни и те же данные в двух местах, что дает вам дилемму того, противоречивые входные данные или осуществление некоторой проверки.
источник
Содержание клиентского запроса; который не будет изменяться при множественных запросах к одному и тому же серверу, будет частью HEADER, например, учетные данные, другие, которые часто изменяются на запрос, будут частью BODY.
ИЛИ ЖЕ
свойство содержимого сообщения / тела перейдет в заголовок. например, тип кодирования, длина контента, тип контента.
А ТАКЖЕ
В вашем случае подобные параметры фильтра должны быть добавлены в качестве параметров запроса / запроса в URL.
/mobiles?type=MOTO&colour=black
В остальных сервисах URL-адрес сам по себе будет ссылаться на объект
/conferences/{conference_id}
-> относится к конкретной конференцииисточник