Design REST API - PullRequest
       7

Design REST API

0 голосов
/ 05 апреля 2019

Я разрабатываю API для своего веб-приложения с помощью django-REST и веб-интерфейса с Vue.js.Есть несколько «каталожных» моделей.Каждый элемент каталога имеет поле идентификатора и может иметь поле ссылки на другой элемент каталога.Вот пример

Элемент устройства

{
"id": 1,
"serial_num": "xxx",
"comment": "",
"nomenclature": 2,
"device_type": 3
}

Номенклатурный элемент

{
"id": 2,
"label": "HP probook 450",
}

Элемент типа устройства

{
"id": 3,
"label": "Laptop",
}

Полная метка для элемента устройства должна быть " device_type + номенклатура " = "Ноутбук HP probook 450".Поэтому, когда мне нужен полный ярлык для элемента устройства во внешнем интерфейсе, я должен разрешить поля «номенклатура» и «тип_устройства», а затем я получаю ярлык.Но для каждого типа объекта я должен сделать специальную функцию для разрешения его метки.И иерархия объектов может быть намного глубже.

Может быть, мне просто нужно добавить поле метки в объекте Device, который будет собираться в бэкэнде.Какова лучшая практика?

1 Ответ

1 голос
/ 05 апреля 2019

Представление данных - это работа внешнего интерфейса.Единственная задача вашего API - предоставлять необработанные данные пользователям с максимально быстрым доступом.Вот почему не очень хорошо объединять данные в ответах API.

Также вы сделаете свой API раздутым, включая поля, которые на самом деле не принадлежат Device.В следующий раз, когда клиенту потребуется обновить формат метки, он также вызовет изменения в api.

Но.Если присоединение метки к устройству позволяет вам не выставлять Nomenclature и Device_type для api, то есть уменьшать количество необходимых http-вызовов не менее чем на 2 раза каждый раз, я думаю, что это хорошее решение - разрешить получение метки через конечную точку устройства (или, скорее, просто присоединить этиОбъекты в ответ API, и все еще позволяет внешнему интерфейсу самостоятельно создавать формат метки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...