2014-11-19 3 views
2

Учитывая REST api. Я хочу узнать, какие типы носителей я могу установить в заголовке Accept. Как мне это?В REST, как найти приемлемые типы медиа?

Я знаю, что я мог сделать случайный

GET http://some.api.com/ 
Accept:flying/elephants 

и надеяться на 406 с корпусом, который имеет правильные приемлемые типы носителей.

Есть ли лучший способ?

ответ

2

В теории, API может указывать на Поддерживаемые типы содержимого с помощью HTTP OPTIONS

Обычно API предлагает либо

  1. ДОКУМЕНТАЦИИ
  2. Specific ресурс поддерживаемых Accept значений -header.

Кроме того (как вы знаете), Accept значения -header обычно связаны с IANA defined MIME types

+0

Интересно, знаете ли вы о каком-либо примере, который делает это через ОПЦИИ или через конкретный ресурс? –

1

Один вопрос с этим какие-либо URI в API могут реагировать с различными типами носителей. Очень часто разные конечные точки API возвращают разные типы контента.

Вы можете использовать несколько запросов подстановочных знаков для проверки на предмет поддержки.

Вы можете начать с Accept: */*, а затем application/*text/**/json*/xml и т.д. Вы бы получить не исчерпывающий список, но вы получите большие одни и предпочтительные из них.

Есть и другие странные краевые случаи. Например, OData позволяет указать параметр $ format в URL для определения типа ответа. Это переопределяет заголовок accept. Таким образом, каждый формат - это собственный URI.

Было бы здорово, если бы API-интерфейсы больше использовали альтернативную ссылку (http://www.w3.org/TR/html5/links.html#rel-alternate), я думаю, что это было бы наиболее подходящим. Это в сочетании с атрибутом типа ссылки позволит вам узнать все форматы для любого ресурса, который вы извлекаете. Опять же, это будет специфично для каждого URI.

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