gpt4 book ai didi

node.js - Express 路由器参数 - 与 URL 链接

转载 作者:行者123 更新时间:2023-12-01 23:21:44 25 4
gpt4 key购买 nike

我在 Express 中定义了完整的 CRUD API,我想删除重复的 base 并使用时髦的 route 函数,但我担心这是不可能的。

当前:

var router = express.Router();
var base = '/api/foo/bar/';
router.get(base, this.list);
router.get(base + ':id', this.read);
router.post(base, this.create);
router.put(base + :id', this.update);
router.del(base + :id', this.del);

期望:

var router = express.Router();
router.route('/api/foo/bar')
.get(this.list)
.get(':id', this.read)
.post(this.create)
.put(':id', this.update)
.del(':id', this.del)

问题在于动词函数(get、post、put、del)不接受字符串作为其第一个参数。

是否有类似的方法可以实现这一点?

最佳答案

重要提示:使用此技术是可行的,但我们知道从 Express 4.3.2 开始,嵌套路由器上定义的所有子路由将无法访问 req.params 在其外部定义,也不是 param 中间件。已经完全隔离了。然而,这可能会在更高版本的 4X 版本中发生变化。请参阅https://github.com/visionmedia/express/issues/2151了解更多(最新)信息。

<小时/>

这样怎么样:

// api.js
var router = express.Router();
router
.route('/')
.get(this.list)
.post(this.create);
router
.route('/:id')
.get(this.read)
.put(this.update)
.del(this.del);
module.exports = router;

// app.js / main.js
app.use('/api/foo/bar', require('./api'));

或者如果您想一次链接所有它们:

// api.js
var router = express.Router();
router
.get('/', this.list)
.get('/:id', this.read)
.post('/', this.create)
.put('/:id', this.update)
.del('/:id', this.del);
module.exports = router;

// app.js / main.js
app.use('/api/foo/bar', require('./api'));

关于node.js - Express 路由器参数 - 与 URL 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23638354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com