我正在使用Node.JS和Express编写一些rest API。因此,对于每个API,我都需要执行所有常见的操作,例如参数验证,身份验证,授权以及实际的业务逻辑。一些sodo代码来说明这一点:
router.get('/users', function (req, res){
async.auto(
authenticateCaller();
authorizeCaller();
validateParams();
doGetUsers();
)
})
这种风格当然有效,但它通过包含许多额外的预用代码使整个功能变得非常麻烦。我知道在Web应用程序编程中,MVC已被引入将UI,Module和Controller分离成不同的代码组,这更加清晰。是否有任何类似的框架可以帮助实现这一目的?
答案 0 :(得分:2)
使用中间件。中间件只是一个函数,它包含三个参数:
fetch("deal_company_branch")
在定义任何路由之前,请调用router.use()来注册中间件。这将导致在执行每个路由之前调用中间件。
这些都是中间件的功能:
答案 1 :(得分:1)
这就是我的工作。
使用Node.js的路由在这里,我正在为名为routes的文件夹让路,其中包含所有代码。
var routes = require('./routes');
var route_add_user = require('./routes/add_user');
在此处使用路线调用该功能; .adduser是该js文件中的函数名称
app.get('/adduser', route_add_user.adduser);
答案 2 :(得分:0)
定义一个函数做日常工作
fuction auth(res,req,next){
authenticateCaller();
req.isAuthorized = authorizeCaller();
validateParams();
next();
}
router.get('/users',auth);
router.get('/users', function (req, res){
if( req.isAuthorized)
{..do some stuff here..}
})
答案 3 :(得分:0)
这是我在关注身份验证并在快速框架中使用API的STYLE之一。
register.js
-----------
exports.addUser = function(req, res) {
// do something
};
exports.deleteUser = function(req, res) {
// do something
};
routes.js
---------
var register = require('./register');
router.get(‘/register’,auth, register.addUser);
router.get(‘/deleteUser’,auth, register.deleteUser);
// Better make it separate common file to reuse all the API
function auth(req,res,next) {
// do something to authenticate your API
}