我正在為我的網路應用程式構建一個 API,并且當 Post.js 中的路由只有 url 引數時,我能夠成功地向它們發送請求。但是當我嘗試創建類似 '/allposts' (Post.js 中的最后一個端點) 的路由時,我在郵遞員上收到 404 錯誤訊息。這是我的代碼:
Post.js
const express = require('express')
const router = express.Router();
const { ObjectID } = require('mongodb')
const { mongoose } = require('../db/mongoose');
// const PostModel = require("../models/Post");
// const Post = PostModel(mongoose);
const {Post} = require("../models/Post.js")
const log = console.log;
router.post('/', (req, res) => {
const post = new Post({
postName: req.body.postName,
postDescription: req.body.postDescription,
})
post.save().then((result) => {
res.send(result)
}).catch((error) => {
log(error)
if (isMongoError(error)) {
res.status(500).send('Internal server error')
} else {
res.status(400).send('Bad Request')
}
})
})
router.get('/:id', (req, res) => {
const id = req.params.id
Post.findById(id).then((post) => {
res.send({ post })
})
.catch((error) => {
log(error)
res.status(500).send("Internal Server Error")
})
})
// This is the route that I can't seem to send requests to
router.get('/allposts', async(req, res) => {
if (mongoose.connection.readyState != 1) {
log('Issue with mongoose connection')
res.status(500).send('Internal server error')
return;
}
try{
const allPosts = await Post.find()
res.send(allPosts)
} catch(error){
log(error)
res.status(500).send("Internal sever error")
}
})
服務器.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.join(__dirname, '/public')))
app.use(cors())
const log = console.log;
const bodyParser = require('body-parser')
app.use(bodyParser.json());
var user = require("./routes/User.js");
var post = require("./routes/Post.js");
app.use('/users', user);
app.use('/post', post);
const port = process.env.PORT || 3001
app.listen(port, () => {
log(`Listening on port ${port}...`)
});
當我向 http://localhost:3001/post/allposts 發送請求時,我收到 404 Not Found 錯誤,但前兩條路由作業正常。似乎帶有 url 引數的路由有效,但 allposts 路由無效。任何幫助將不勝感激。謝謝。
uj5u.com熱心網友回復:
主要問題是路線的順序。
router.get('/:id')之前會被初始化router.get('/allposts')。因此,當您想訪問 /allposts 時,第一個路由器會捕獲它。
您需要切換初始化順序。
先router.get('/allposts')然后router.get('/:id')。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453604.html
上一篇:多個數字的字串陣列。數學平均
