Архитектура/дизайн проекта Django Rest API - Каким должен быть хороший дизайн для моего API?

Я новичок в Django и API в целом, и я хочу создать API на базе Django, используя Django Rest Framework.

API должен иметь следующее:

API with employees CRUD:

 - GET: /employees/ (employee list)
 - POST: /employees/ (employee create)
 - UPDATE /employees/ID/ (employee update)
 - DELETE /employees/ID/ (employee delete)
 - GET /employees/ID/ (employee detail)

API with reports:

 - GET /reports/employees/salary/ (salary report)
 - GET /reports/employees/age/ (age report)

Конечная точка для списка сотрудников:

curl -H "Content-Type: application/json" localhost:8000/employees/

Конечная точка отчета о диапазоне зарплат::

curl -H 'Content-Type: application/json' localhost:8000/reports/employees/salary/

Он должен сохранять данные в базе данных и использовать аутентификацию для доступа.

Как мне структурировать этот проект с точки зрения приложений, папок и т.д.?

До сих пор я предполагал, что у меня будет что-то вроде этого:

root
├───backend (folder)
│   │   manage.py
│   │
│   ├───api (app)
│   ├───django_project
│   ├───employees (app)
│   ├───reports (app)
│   └───users (app)
└───client
        my_client.py --> will consume the api

Или, может быть, что-то вроде этого?

root
├───backend (folder)
│   │   manage.py
│   │
│   ├───api (app)
│   ├───applications (folder)
│   │   ├───employees (app)
│   │   ├───reports (app)
│   │   └───users (app)
│   └───django_project
│           settings.py
│
└───client (folder)
        my_client.py

Обс: Пока просто игнорируйте недостающие файлы. Это не настоящий проект.

Мой вопрос заключается в следующем: Является ли любой из этих вариантов хорошим дизайном и/или способом структурировать мой проект? Почему или почему нет?

По сути, что превратить в приложения? Как лучше всего организовать мой проект?

Я читал это, но у меня все еще есть сомнения.

P.s.: Также, если у кого-нибудь есть другие хорошие источники информации о лучших практиках проектирования Django API, пожалуйста, дайте мне знать.

Заранее спасибо.

Вернуться на верх