在类中订购RESTful API方法的最佳实践

时间:2016-01-31 04:25:40

标签: node.js rest oop typescript restful-architecture

我在TypeScript中构建了一个暴露RESTful API的Node.js网站。

将不同方法分离到不同类/文件的最佳做法是什么?

我想我需要为每个资源创建一个单独的类。例如:

var varname = jQuery.noConflict();

这是真的吗?如果我有很多资源,每个只包含一个方法怎么办?

例如:

class Customers{
    router.get('/customers');
    router.post('/customers');
    router.put('/customers');
    router.delete('/customers');
}

class Orders{
    router.get('/orders');
    router.post('/orders');
    router.put('/orders');
    router.delete('/orders');
}

修改 我得知我可以将所有路由放在一个文件中,只需将处理程序分成多个文件即可。所以我的问题是:如何将它们逻辑地分成/分成不同的文件(关于我在问题中写的例子)?

注意:我不需要技术程序信息,但需要逻辑分离的抽象解释。

1 个答案:

答案 0 :(得分:2)

我通常不会将路由本身分开,所有路由都在主应用程序模块中配置:

// server.js

var routes = require('routes');  // handlers and not the route definitions
// list of routes
router.get('/orders', routes.orderList);
router.get('/orders/:id', routes.orderGet);
router.post('/customers', routes.customerCreate);

routes文件夹下我有处理程序:

├── routes
│   ├── index.js
│   ├── orderGet.js
│   ├── orderList.js
│   ├── customerCreate.js
│   ├── ...

index.js有一个所有路由器的列表(我认为它可以改进以动态生成),每个路由处理程序如下所示:

// Require dependencies
var Q = require('q');
var models = require('../models');

/*
 * GET order list.
 */

exports.route = function(req, res, next){
    // Handle input parameters, generate the response
}

我的方法是每个路由有一个文件并使用'methodGroupMeaning'之类的命名,例如'orderGet','orderList'等。

这样文件自然地分组在文件系统中(按名称排序)。即使是一个有很多路线的大型项目,也很容易找到你需要的路线文件,同时路线模块保持小而干净。