Лучшие практики RESTful API

Я разработчик Android, а также имею некоторые знания в области разработки RESTful API. В настоящее время я создаю API с использованием Dot Net Web API. Все работает нормально, но я все еще обеспокоен дизайном.

Основная проблема для меня сейчас заключается в том, что именно должно быть метаданными ответа, например, какие другие полезные элементы я могу добавить, кроме «Кода ответа» и «Сообщения ответа».

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

И последняя проблема заключается в том, какую технику я должен использовать, чтобы сделать связь с отслеживанием состояния, такую ​​​​как JWT или базовая аутентификация и т. д., без сохранения состояния.


person Coderkhan    schedule 30.05.2016    source источник


Ответы (2)


Сначала вы должны прочитать главу 5 Архитектурные стили и проектирование сетевых Архитектуры программного обеспечения, Рой Томас Филдинг. Вы узнаете из первых рук об архитектурных ограничениях, элементах и ​​представлениях REST.

Основная проблема для меня сейчас заключается в том, что именно должно быть метаданными ответа, например, какие другие полезные элементы я могу добавить, кроме «Кода ответа» и «Сообщения ответа».

Одним из архитектурных элементов REST являются представления. Представления позволяют клиенту интерпретировать ответ. В случае RESTful HTTP-представления реализуются MIME-типом. Для получения дополнительной информации см. [2]. Другими аспектами, которые вы должны учитывать, являются URI, поддерживаемые методы HTTP, параметры URL и тело сообщения.

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

Одним из архитектурных ограничений REST является архитектурный стиль клиент-сервер. Поэтому ваш сервер должен обрабатывать параллельные запросы, чтобы обрабатывать более одного запроса клиента одновременно. Если запрос, метод или функция обрабатываются асинхронно, это не имеет значения для RESTful.

И последняя проблема заключается в том, какую технику я должен использовать для связи с отслеживанием состояния, такой как JWT или базовая аутентификация и т. д.

JWT и базовая аутентификация являются методами аутентификации без сохранения состояния. Термин «без сохранения состояния» означает, что клиентский запрос содержит всю информацию, необходимую серверу для обработки клиентского запроса.

person Paul Wasilewski    schedule 31.05.2016

1) МЕТА-данные — представления ресурсов должны управляться HATEOAS в соответствии с Филдинг сам. Таким образом, вы можете добавить ссылки на связанные ресурсы в метаданные.

2) Синхронизация/асинхронность. Это зависит от того, что пытается сделать API. Если он вызывает длительный процесс, асинхронный API является естественным выбором. В противном случае придерживайтесь Sync API.

3) Связь с сохранением состояния. Быть без гражданства является одним из ограничений REST-архитектура. Контекст клиента не должен храниться на сервере между запросами. Клиент отвечает за управление состоянием приложения.

person lokesh    schedule 04.06.2016