【问题标题】:how to version and organize routers restify如何版本化和组织路由器 restify
【发布时间】:2017-12-13 16:01:57
【问题描述】:

我是 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 似乎解决了这个问题,但自 3 月以来它没有任何提交..

总之..

1- 我应该如何处理多个路由版本?

2- 是否可以在不同的文件夹/文件中组织路由?

3- 如果无法实现。有没有其他更好的框架来实现这一点?

【问题讨论】:

  • 您想为每个 API 版本使用一个完全独立的路由器吗?这在很大程度上取决于您希望如何管理不同版本的代码。
  • 为不同版本的 API 单独的文件/文件夹是个好主意。

标签: javascript node.js rest express restify


【解决方案1】:

Restify 有一个nice convention for versioning your Routes

您可以要求客户端在请求的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()

})

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 2014-02-05
    • 2012-05-27
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    相关资源
    最近更新 更多