согласование содержания

Согласование содержимого — это механизм, позволяющий одному URL-адресу предоставлять несколько вариантов отображения. Клиент указывает, что он может принять; сервер выбирает из того, что он может предоставить; в ответе указывается, какой вариант был выбран. В любом случае ресурс остается тем же — различается только его отображение.

Как это работает

Клиент отправляет Accept с указанием желаемых типов медиафайлов, при необходимости взвешенных с помощью q-значений. Сервер отвечает Content-Type, указывая фактически отправленные данные, и должен отправить Vary: Accept, чтобы кэш не отправлял JSON-ответ клиенту, запросившему CSV. Если клиент не может отправить ничего приемлемого, ответ — 406 Not Acceptable. Зеркальный случай — когда клиент отправляет тело запроса в формате, который сервер не сможет обработать, — приводит к ошибке 415 Unsupported Media Type.

Заблуждение

Этот заголовок Accept носит рекомендательный характер и может быть проигнорирован. Многие API игнорируют его и всегда возвращают JSON, что работает до тех пор, пока клиенту действительно не понадобится что-то другое, и он не получит JSON с кодом 200, молча. Честный ответ на неудовлетворительный заголовок Accept — это код 406.

Попробуйте здесь.

В Protocol Lab происходит реальное согласование: `GET /protocol/v1/export/documents` выдаст JSON, CSV или XML в зависимости от заголовка Accept, установит Content-Type в выбранное значение и ответит кодом 406, вместо того чтобы молча возвращаться к исходному варианту, если вы запросите что-то, что он не может предоставить. В Friends API при входящем запросе возникает код 415.

Источники

Другие термины

Читать страницу на английском

Все термины · Приёмы тестирования · Все 39 mock REST API

Последнее обновление