有一些rest api方法
例如:
var express = require('express');
var router = express.Router();
function method1 (res, req) {
// something actions
}
router.get('/method1', method1);
// вот решение
router.get('/method2', function(res, req) {
req.data = { hand:'1' };
return method1(res, req);
});
这就是您可以覆盖和调用另一个 api 方法的方式,在我看来,这是一个拐杖并且测试不佳。很多时候需要覆盖或扩展 API 中的某个方法。这种方式有多正确?
有没有更靠谱的做法?
一个更正确的选择是将公共代码分离到一个单独的函数/模块中,并更准确地描述它/它的参数,而不是使用请求和响应对象。也就是说,将您的服务逻辑与传输 (http) 分开。
这将更好地表达您的意图,改进模块化并使测试更容易。
Express.js 是围绕中间件的概念构建的。
主要思想是每个请求不是由一个控制器函数处理,而是由一整堆函数同时处理。这允许您在实际处理请求对象之前“准备”它。这就是它的工作原理,例如
body-parser:在您的情况下,您可以使用类似的方法:
您可以在此处
next阅读有关如何处理参数的更多信息。