Sobes.tech
Middle
157
questionbank

Какие правила наименования ресурсов (URL) в RESTful API ты знаешь?

Answer from AI

sobes.tech AI

Наименования ресурсов в RESTful API должны быть понятными, предсказуемыми и последовательными. Основные правила включают:

  • Использование существительных во множественном числе: Ресурсы обычно представляют собой коллекции объектов. Например, /users вместо /user.
  • Использование строчных букв: URL чувствительны к регистру, использование строчных букв помогает избежать ошибок.
  • Использование дефисов для разделения слов: Дефисы читаются лучше, чем нижнее подчеркивание (_). Например, /product-orders вместо /product_orders.
  • Отсутствие глаголов: Методы HTTP (GET, POST, PUT, DELETE) указывают на действие, поэтому они не должны повторяться в самом URL. Например, /users/create или /get-users – плохие практики. /users с методом POST для создания или GET для получения – правильный подход.
  • Использование иерархических отношений: Вложенные ресурсы должны отражать их связь. Например, /users/{userId}/orders указывает на заказы конкретного пользователя.
  • Минимизация глубины вложенности: Чрезмерно глубокая вложенность может сделать URL трудными для понимания.
  • Использование параметров запроса для фильтрации, сортировки и пагинации: Эти операции над коллекцией ресурсов должны указываться в параметрах, а не в пути URL. Например, /users?status=active&sortBy=lastName.
// Примеры хороших URL:
// GET /users - Получить список пользователей
// GET /users/123 - Получить пользователя с ID 123
// POST /users - Создать нового пользователя
// PUT /users/123 - Обновить пользователя с ID 123
// DELETE /users/123 - Удалить пользователя с ID 123
// GET /users/123/orders - Получить список заказов пользователя с ID 123
// GET /products?category=electronics&sortBy=price - Получить продукты по категории с сортировкой

// Примеры плохих URL:
// GET /getUsers
// POST /createUser
// GET /user/123
// GET /users_list
// GET /users/getOrdersForUser/123

Таблица сравнения хороших и плохих практик:

Хорошая практика Плохая практика
/users (GET) /getUsers (GET)
/users/{id} (GET, PUT, DELETE) /user/{id} (GET, PUT, DELETE)
/users (POST) /createUser (POST)
/users/{id}/orders /getOrdersForUser/{id}
/products?category=... /productsByCategory/...