Я только что закончил читать Restful Web Services и Никто не понимает REST или HTTP, и я пытаюсь создать API с дизайном RESTful.
Я заметил несколько шаблонов в дизайне URI API:
http://api.example.com/users
http://example.com/api/users
http://example.com/users
Предположим, что эти проекты правильно используют заголовки Accept
и Content-type
для переговоров по содержанию между XHTML, JSON или любым форматом.
Являются ли эти URI вопросом чистой реализации RESTful против неявного согласования содержимого?
Мои мысли заключаются в том, что, явно используя API в URI, так это то, что клиент ожидает формат данных, который по своей сути не является удобной для пользователя гипермедией и может быть легче потреблен без явной настройки заголовка Accept
. Другими словами, API подразумевает, что вы ожидаете JSON или XML, а не XHTML.
Это вопрос разделения представлений ресурсов логически на стороне сервера?
Единственное оправдание, которое я могу решить, почему кто-то проектировал свой URI с субдоменом API, заключается в том, что, исходя из моего предположения, что это метод масштабирования, он должен упростить загрузку запросов маршрутизации в многоуровневой серверной инфраструктуре, Возможно, существуют ситуации, когда обратные прокси-серверы лишают заголовки? Я не знаю. Различные серверы, обрабатывающие разные представления?
Возможно, субдомен используется только для внешних потребителей, так что сервер избегает накладных расходов из внутреннего использования. Ограничение скорости?
Мне не хватает точки?
Мой предлагаемый дизайн попытается следовать правилам RESTful, установив соответствующие заголовки, правильно используя HTTP-глаголы и представляя ресурсы таким образом, что я чувствую, включая "API" в URI, будет избыточным.
Почему кто-то проектирует RESTful API с "API" в URI?
Или они могли? Может быть, моя проблема с не пониманием этого дизайна заключается в том, что это не имеет значения, если он следует некоторой комбинации спецификации, которая может не привести к реализации RESTful API, но закрыта? Существует несколько способов обмануть клавиатуру. HATEOAS связаны?
Обновление: При исследовании этой темы я пришел к выводу, что важно рассматривать идеи REST, но не рассматривать ее как религию. Таким образом, имеет ли "api" в URI более конструктивное решение, чем твердое правило. Если вы планируете публиковать свой веб-сайт API публично, было бы неплохо использовать поддомен api, чтобы помочь справиться с логикой приложения. Я надеюсь, что кто-то внесет свой вклад в изучение других людей.