как версионировать и организовывать маршрутизаторы restify

Я новичок в мире javascript и пытаюсь создать «базовое» приложение RESTful. До сих пор я нашел фреймворк restify, который кажется одним из лучших для выполнения этой задачи, поскольку Express больше подходит для обработки стороны просмотра приложения.

Теперь я столкнулся с тем, как я могу использовать версию своего API и в то же время иметь разные маршруты в своих собственных файлах?

Например:

GET - app.com/v1/users
POST - app.com/v1/users
PUT - app.com/v1/users
DELETE - app.com/v1/users

GET - app.com/v2/users
POST - app.com/v2/users
PUT - app.com/v2/users
DELETE - app.com/v2/users

Я предполагаю, что для лучшей организации у меня должен быть файл маршрута для версии пользовательского маршрутизатора v1 и v2. Что-то вроде этого:

routes/v1/users (will handle the four REST verbs for v1)

routes/v2/users (will handle the four REST verbs for v2)

Хороший ли это подход? Как я могу добиться этого с помощью restify?

Я нашел restify-router, который вроде бы решает эту проблему, но не есть коммиты с марта..

В итоге..

1- Как мне обрабатывать несколько версий маршрутов?

2- Можно ли организовать маршруты в разных папках/файлах?

3- Если это не достижимо. Есть ли другая лучшая структура для этого?


person Marcos    schedule 10.07.2017    source источник
comment
Вы хотите иметь полностью отдельный маршрутизатор для каждой версии API? Многое зависит от того, как вы хотите управлять кодом для разных версий.   -  person jfriend00    schedule 10.07.2017
comment
Отдельный файл/папка для разных версий вашего API — хорошая идея.   -  person Jonathan Goodman    schedule 19.07.2017


Ответы (1)


В Restify есть удобное соглашение для управления версиями ваших маршрутов.

Вместо использования пути для определения версии маршрута вы можете потребовать от клиента установить номер версии в заголовке Accept-Version вашего запроса.

Обычно я создаю один файл для каждого ресурса и обслуживаю каждую версию этого ресурса из одного и того же файла. Restify имеет удобный способ определения маршрутов с номерами версий, как показано ниже:

server.use(restify.authorizationParser())

server.get({path: users, version: 1.0.0}, function(req, res, next) {

  // handle version 1 get users request

  next()

})

server.get({path: users, version: 2.0.0}, function(req, res, next) {

  // handle version 2 get users request

  next()

})
person Jonathan Goodman    schedule 19.07.2017