Задать вопрос
apiquestion
@apiquestion
Студент

Доступ к ресурсам REST API?

Например, есть приложение, хранящее информацию о транспорте (тип транспорта, его характеристики) и о предприятиях, на которых производится конкретный транспорт.
В БД транспорт лежит в таблице Transport, у каждого транспорта есть тип.
В API необходимо предоставлять доступ к транспорту по его типу, напр. так:
/motorcycles/
/autos/
/bicycles/
и т.д.
В API должна быть возможность получить производимые определенным предприятием транспортные средства.
Например так:
/manufacturers/transports/
Вопрос: как правильнее вернуть информацию о транспорте, который производит предприятие? Если вернуть только Id, пользователь API не поймет какой endpoint использовать.

UPD: Данные о предприятиях и о транспорте лежат в разных БД. Приложение разбито на модули и модуль, работающий с предприятиями не знает ничего о транспорте, кроме идентификаторов.
  • Вопрос задан
  • 272 просмотра
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
copist
@copist
Empower people to give
Вы зря тип транспорта "зашили" в URL, от этого и путаница.

Классический REST API оперирует сущностями. У вас сущности "производитель", "типы транспортных средств", "транспортные средства производителя", "типы транспортных средств производителя" и "транспортное средство"

GET /api/transport-types список типов транспортных средств
GET /api/transport-type/[id] один конкретный тип транспортных средств
GET /api/manufacturers список производителей
GET /api/manufacturer/[id] описание производителя (название, адрес)
GET /api/manufacturer/[id]/transport-types список типов транспортных средств производителя
GET /api/manufacturer/[id]/transport-type/[id] описание типа транспортных средств производителя
GET /api/manufacturer/[id]/transports список транспортных средств производителя
GET /api/manufacturer/[id]/transport/[id] описание одного транспортного средства производителя
GET /api/manufacturer/[id]/transport/[id] описание одного транспортного средства производителя

Степень детализации ответа зависит от вас. Можно сделать так, что списки будут возвращать только ID, а остальную информацию получать дополнительными запросами. А можно сделать так, что список будет сразу содержать много основной и дополнительной информации.

Это приблизительно, только для получения информации
Ещё отдельно для добавления, обновления, удаления

Можно отойти от концепции REST и взять RPC. Тогда в ответ можно возвращать сколько угодно информации в каком угодно виде.

GET /api/get-transport-type-of-manufacturer?manufacturer_id=[id]&transport-type_id=[id] вернуть описание типа транспортных средств производителя
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы