REST: HTTP-заголовки или параметры запроса - PullRequest
44 голосов
/ 30 октября 2011

Я проводил некоторые исследования вокруг REST. Я заметил, что Amazon S3 API использует главным образом заголовки http для своего интерфейса REST. Это было для меня неожиданностью, так как я предполагал, что интерфейс будет работать в основном без параметров запроса.

У меня такой вопрос: должен ли я разрабатывать свой интерфейс REST, используя в основном заголовки http, или использовать параметры запроса?

1 Ответ

63 голосов
/ 30 октября 2011

Вопрос в основном заключается в , являются ли определенные параметры частью идентификатора ресурса (URI) или нет. , если это так, то вы бы использовали параметры запроса, в противном случае пользовательские заголовки HTTP. Например, передача идентификатора album в музыкальной галерее должна быть частью URI.

Помните, например, /employee/id/45 (или /employee?id=45, REST не имеет предвзятого отношения к параметрам строки запроса или для URI, разделенных чистой косой чертой), идентифицирует один ресурс. Теперь вы можете использовать согласование содержимого, отправив заголовок запроса content-type: text/plain или content-type: image/jpg, чтобы получить информацию или изображение. В этом отношении ресурс считается одинаковым, а заголовок используется только для определения формата ресурса.

Как правило, я не большой поклонник пользовательских заголовков HTTP. Это обычно предполагает, что клиент уже имеет предварительные знания о реализации сервера (не обнаруживаемые с помощью естественных средств HTTP, т.е. гипермедиа), которые всегда считаются анти-шаблоном REST

Заголовки HTTP обычно определяют аспекты HTTP , ортогональные к тому, что должно быть достигнуто в процессе запроса / ответа. Заголовок Authorization (на самом деле неправильный, должно быть, это была аутентификация) - классический пример.

...