使用 url 参数但不使用特定子路由的快速路由
Express routes working with url params but not with specific sub routes
我正在为我的网络应用程序构建一个 API,当 Post.js 中的路由只有 url 参数时,我能够成功地将请求发送到它们。但是,当我尝试创建类似“/allposts”(Post.js 中的最后一个端点)的路由时,我在邮递员上收到了 404 错误消息。这是我的代码:
router.post('/', (req, res) => {
// Endpoint 1 code here
})
router.get('/:id', (req, res) => {
// Endpoint 2 code
})
// This is the route that I can't to send requests to
router.get('/ap', async(req, res) => {
try{
const ap = await P.find()
res.send(ap)
} catch(error){
log(error)
res.status(500).send("error")
}
})
server.js
const express = require('express')
var cors = require('cors')
const fs = require('fs');
const path = require('path');
var app = express()
app.use(express.static(path)
app.use(cors())
const bodyParser = require('body-parser')
app.use(bodyParser.json());
var p = require("./routes/P.js");
app.use('/post', p);
const PORT = process.env.PORT || 3001
app.listen(port, () => {
log(`Listening on port ${PORT}...`)
});
当我向 http://localhost:3001/post/ap 发送请求时,出现 404 Not Found 错误,但前两条路由工作正常。似乎带有 url 参数的路由有效,但 allposts 路由无效。任何帮助将不胜感激。谢谢
主要问题是路线的顺序。
router.get('/:id')
将在 router.get('/allposts')
之前初始化。所以当你想访问 /allposts 时,第一个路由器会捕获它。
您需要切换初始化顺序。
首先 router.get('/allposts')
然后 router.get('/:id')
。
我正在为我的网络应用程序构建一个 API,当 Post.js 中的路由只有 url 参数时,我能够成功地将请求发送到它们。但是,当我尝试创建类似“/allposts”(Post.js 中的最后一个端点)的路由时,我在邮递员上收到了 404 错误消息。这是我的代码:
router.post('/', (req, res) => {
// Endpoint 1 code here
})
router.get('/:id', (req, res) => {
// Endpoint 2 code
})
// This is the route that I can't to send requests to
router.get('/ap', async(req, res) => {
try{
const ap = await P.find()
res.send(ap)
} catch(error){
log(error)
res.status(500).send("error")
}
})
server.js
const express = require('express')
var cors = require('cors')
const fs = require('fs');
const path = require('path');
var app = express()
app.use(express.static(path)
app.use(cors())
const bodyParser = require('body-parser')
app.use(bodyParser.json());
var p = require("./routes/P.js");
app.use('/post', p);
const PORT = process.env.PORT || 3001
app.listen(port, () => {
log(`Listening on port ${PORT}...`)
});
当我向 http://localhost:3001/post/ap 发送请求时,出现 404 Not Found 错误,但前两条路由工作正常。似乎带有 url 参数的路由有效,但 allposts 路由无效。任何帮助将不胜感激。谢谢
主要问题是路线的顺序。
router.get('/:id')
将在 router.get('/allposts')
之前初始化。所以当你想访问 /allposts 时,第一个路由器会捕获它。
您需要切换初始化顺序。
首先 router.get('/allposts')
然后 router.get('/:id')
。