gpt4 book ai didi

javascript - 使用具有多个 url 和可选参数的 express.Router()

转载 作者:行者123 更新时间:2023-11-30 16:04:43 25 4
gpt4 key购买 nike

我在使用 express.Router() 时遇到问题,我不确定我的问题是什么。我的问题是,当我向 url '/api/zip' 或 '/api/zip/' + zip 发出 GET 请求时,其中 zip 是数字邮政编码,唯一被命中的路径是 '/',在下面的示例中记录“$$$$$$$$$$$$”。

当我在 results_api.js 中取出“/”的路由时,会记录“made it to server.js”,但我没有从 results_api.js 中得到任何信息。让我知道是否需要发布更多上下文代码。我正在使用 Angular 前端,但我假设由于我的请求总是到达 server.js(通过记录“made it to server.js”进行验证),所以我的问题在 results_api.js 中。

我以前使用过这种路由方法,但不确定这次出了什么问题。我如何设法点击 routes.get('/zip/:zip... ?

在我的 server.js 文件中:

var express = require('express');
var routes = express.Router();

//route to index.html
var assetFolder = Path.resolve(__dirname, '../client/');
routes.use(express.static(assetFolder));

//api routes
routes.use('/api/*', require(‘./api/results_api.js’), function(){
console.log('made it to server.js')});

我的 results_api.js 文件:

var router = require('express').Router();

router.get('/', function(req, res){
console.log('$$$$$$$$$$$$$$$')

});

router.get('/zip', function(req, res){
console.log(‘###################’)

});

router.get('/zip/:zip', function(req, res){
console.log('%%%%%%%%%%%%%%%%%')

});

module.exports = router;

这个问题:

express.Router() get url route with optional parameters

与我的很接近,但没有中间参数(在我的例子中是“/api”之后的“/zip/”)。这是否表明我正在尝试做的事情只是构建我的 api 的错误方法?

最佳答案

以相反的顺序调用这些处理程序。 /zip/:zip,然后是 /zip,然后是 /

实际上,问题出在这一行:

routes.use('/api/*', require(‘./api/results_api.js’), function(){ 
console.log('made it to server.js')});

/api/* 将“吞噬”/api/ 之后的所有内容,因此您的路由器会认为它是用 / 调用的。将其更改为:

routes.use('/api', require('./api/results_api.js'), function() { 
console.log('made it to server.js')
});

关于javascript - 使用具有多个 url 和可选参数的 express.Router(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37221315/

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