«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Руководство по проектированию REST API и соглашениям об именах

Руководство по проектированию REST API и соглашениям об именах

Опубликовано 6 ноября 2024 г.
Просматривать:341

Guide to REST API Design and Naming Conventions

Эффективное проектирование RESTful API имеет решающее значение для создания масштабируемых, удобных в обслуживании и простых в использовании систем. Хотя существуют определенные стандарты, многие из них представляют собой не строгие правила, а лучшие практики проектирования API. Одним из широко используемых архитектурных шаблонов для API является MVC (Модель-Представление-Контроллер), но он сам по себе не затрагивает более тонкие аспекты проектирования API, такие как именование и структура. В этой статье мы рассмотрим основные рекомендации по структурированию REST API.

  1. Соглашения об именах и ресурсо-ориентированный дизайн API часто определяются вокруг ресурсов, которые представляют объекты в вашей системе, такие как «пользователи», «продукты» или «заказы». Ресурс может представлять собой отдельный элемент или коллекцию, а API должен обеспечивать интуитивно понятный и понятный способ взаимодействия с этими ресурсами.

Основные принципы:
Ресурсно-ориентированное: создавайте свои API вокруг ресурсов, а не действий. Ресурсы следует рассматривать как существительные, а не глаголы. Например:

/users для доступа к коллекции пользователей.
/users/{userId} для доступа к конкретному пользователю.
Последовательность: API должен быть интуитивно понятным. Если пользователь может получить список ресурсов из /users, он должен ожидать, что сможет получить отдельные ресурсы, добавив идентификатор: /users/{userId}.

Коллекция или отдельный ресурс:

Набор ресурсов представлен существительными во множественном числе: /users, /products.
Один ресурс представляется добавлением уникального идентификатора этого ресурса: /users/{userId}, /products/{productId}.

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

Распространенные методы HTTP и варианты их использования:
GET: Получить данные с сервера.

Пример: GET /products возвращает список всех продуктов.
Пример: GET /users/{userId} извлекает пользователя с указанным идентификатором пользователя.
POST: Создайте новый ресурс на сервере.

Пример: POST /users создает нового пользователя.
PUT: заменить существующий ресурс новыми данными (полное обновление).

Пример: PUT /users/{userId} полностью заменяет данные пользователя новыми данными.
ИСПРАВЛЕНИЕ: Частично обновить существующий ресурс (частичное обновление).

Пример: PATCH /users/{userId} обновляет только указанные атрибуты, например номер телефона.
УДАЛИТЬ: удалить ресурс.

Пример: DELETE /users/{userId} удаляет пользователя с указанным идентификатором пользователя.

  1. Безгражданство в REST API REST должны быть без сохранения состояния, то есть каждый вызов API должен содержать всю информацию, необходимую серверу для обработки запроса. Это гарантирует, что каждый запрос является самодостаточным и не зависит от предыдущих запросов.

Пример: при выполнении запроса GET для получения сведений о пользователе запрос должен включать необходимый токен авторизации, даже если предыдущий запрос уже аутентифицировал пользователя. Это важно в распределенных системах, где разные запросы могут поступать на разные серверы.

  1. Избегайте хранения данных, специфичных для сервера Ни один отдельный запрос API не должен полагаться на хранение временных данных на конкретном сервере. В распределенной системе входящие запросы могут быть перенаправлены на любой сервер, поэтому одинаковый результат должен быть достигнут независимо от того, какой сервер обрабатывает запрос. Вот почему состояния сеанса не следует хранить на отдельных серверах.

Решение. Для управления сеансами используйте централизованные или распределенные системы хранения, такие как Redis, или механизм аутентификации без сохранения состояния, например JWT (JSON Web Token).

  1. Таблицы ресурсов и баз данных В вашем API не должно быть однозначного сопоставления между таблицами базы данных и конечными точками API. API должен предоставлять логические и значимые ресурсы, которые могут объединять данные из нескольких таблиц или источников.

Пример:
GET /orders/{orderId} может получать сведения о заказе, объединяя информацию из таблиц Orders, Order_items и Customers.

  1. Гибкость типов данных API REST не ограничены типами данных или структурами таблиц вашей базы данных. Вы можете структурировать свои ответы таким образом, чтобы они наилучшим образом подходили вашим потребителям API. Хотя JSON является наиболее часто используемым форматом, при необходимости вы можете возвращать данные в других форматах, таких как XML или CSV.

Пример: конечная точка GET /reports/{reportId} может возвращать отчет в различных форматах (JSON, CSV, PDF) на основе параметров запроса или заголовков в запросе.
Пример структуры API
Чтобы связать все эти принципы воедино, вот пример структуры API, основанной на следующих лучших практиках:

GET /products: извлекает все продукты.
GET /products/{productId}: извлекает сведения о конкретном продукте.
POST /products: Создает новый продукт.
PUT /products/{productId}: заменяет продукт на productId.
PATCH /products/{productId}: Частично обновляет продукт.
DELETE /products/{productId}: удаляет товар.
В этой структуре ресурсы четко определены, а методы HTTP определяют действия, которые необходимо предпринять, обеспечивая чистый и интуитивно понятный API.

**Заключение
**Проектирование RESTful API включает в себя нечто большее, чем просто создание маршрутов и обработку методов HTTP. Сосредоточив внимание на ресурсах, используя методы HTTP для действий и придерживаясь принципа отсутствия состояния, вы создаете интуитивно понятные, удобные в обслуживании и масштабируемые API. Помните, что API должны быть гибкими и независимыми от конкретных структур базы данных, обеспечивая большую адаптируемость по мере роста вашей системы.

Следование этим соглашениям гарантирует, что ваш API будет одновременно эффективным и удобным для пользователя, что в конечном итоге улучшит качество работы как разработчиков, так и потребителей вашего API.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/rahul_ranjan_7200/guide-to-rest-api-design-and-naming-conventions-46co?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3