Структура файлов REST API backend?

Всем привет!
Пилю backend на Expressjs. Заказчик просит чтобы backend состоял как бы из двух API:
shop-api.routes.js: /api/shops/bla-bla
buyer-api.routes.js: /api/buyers/bla-bla
Между роутами shops и buyers очень много общего функционала.

Пожалуйста, помогите со структурой файлов. Я вижу такие варианты:
1) как можно меньше файлов
src
..api
....shop-api.js <- весь функционал shop-api
....buyer-api.js <- весь функционал buyer-api
..helpers
....api-common.js <- общий функционал (между shop и buyer)


2) разбить на модули по сущностям:
src
..api
....shop-api 
......shop-api.users.js <- функционал сгруппирован по сущностям
......shop-api.books.js
....buyer-api
......buyer-api.users.js
......buyer-api.books.js
..helpers
....api-common.js <- общий функционал


3) 1 роут - 1 файл (разбить еще сильнее)
src
..api
....shop-api 
......users
........shop-api.users.get.js <- 1 роут - 1 файл
........shop-api.users.post.js 
....buyer-api
......users
........shop-api.users.get.js 
........shop-api.users.post.js 
..helpers
....api-common.js <- общий функционал


4) другая проблема: огромный api-common.js. Может его разбить?
..helpers
....api-common.users.js <- общий функционал разбит на модули
....api-common.books.js


Подскажите какая структура правильная? Как хранить кучу (тысячи строк) общего функционала?
  • Вопрос задан
  • 1323 просмотра
Решения вопроса 1
@galliard
Ну во первых стоит отказаться от использования слова "api" в названии папок, файлов, классов, функций, etc.

Я подобную задачу решал приблизительно так:
..shop
....users.js
....books.js
..buyer
....users.js
....books.js
..users.js
..books.js

При этом users.js и books.js, лежащие в папках shop и buyer, наследовались от users.js и books.js, лежавшие в корневой папке.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@vshvydky
-src
--controllers
--models
--repositories
--services or workers
--tools or utils
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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