javascript - Express 端点为 POST 返回 404,但为 GET 返回 200
问题描述
使用 Express 为 API 构建了一个简单的 Node 应用程序。发送 GET 请求效果很好,我得到了 200 的状态。但是,当我向同一个端点发送 POST 请求时,我收到了 404 Not found 的状态。
我已经对 Postman 和 cURL 进行了测试,并且两者都得到了相同的结果。
服务器.js
const express = require("express")
const mongoose = require("mongoose")
const config = require("config")
const axios = require("axios")
const db = config.get("mongoURI")
const port = process.env.PORT || 3000
const app = express()
// Middleware parsing
app.use(express.json())
app.use(express.urlencoded({ extended: false }));
// DATABASE CONNECT
mongoose
.connect(db, { useNewUrlParser: true })
.then(() => console.log("Connected to mLab database"))
.catch(err => console.log("ERROR: ", err))
// ROUTER
app.use("/api/stocks", require("./routes/api/stocks"))
// POST REQUEST INternal API ##########
function postSymbols() {
axios.post("http://localhost:3000/api/stocks", "exampleStock")
.then(res => {
console.log(res.data.msg)
})
.catch(err => console.log("POST postSymbols() ERROR", err.response.status, err.response.statusText))
}
// GET REQUEST INternal API ##########
// CURRENTLY WORKS
function showStocks(){
axios.get("http://localhost:3000/api/stocks")
.then(res => console.log(res.data.msg))
// .then(res => console.log(res.data.stocks))
.catch(err => console.log("GET showStocks() ERROR", err))
}
// NODE SERVER ##########
app.listen(port, () => {
console.log("Node server started on: ", port);
showStocks()
postSymbols()
})
路线/api/stocks.js
const express = require("express")
const router = express.Router()
const Stock = require("../../model/Stocks")
router.get("/", (req, res) => {
console.log("GET router hit.")
Stock.find()
.then(stocks => res.json({
stocks,
msg: "GET request sucessfull."
}))
})
router.post("/"), (req, res) => {
console.log("POST router hit.")
const newStock = new Stock({
name: req.body.name,
message: req.body.message,
date: req.body.date,
isEnabled: req.body.isEnabled,
type: req.body.type,
iexId: req.body.iexId,
currentPrice: req.body.currentPrice
})
newStock.save()
.then(stocks => res.json({
stocks,
msg: "POST request sucessfull!"
}))
.catch(err => console.log("POST ERROR: ", err))
}
module.exports = router;
这是 Postman 请求和结果的图像 Postman GET 200 Postman GET 200
邮递员 POST 404 邮递员 POST 404
我期望为 GET 和 POST 请求获得 res.json 成功消息,但是我只为 GET 获得 res.json 成功消息,并且我为 POST 请求获得 404 Not Found
解决方案
您在 POST 路由定义上放错了右括号:
router.post("/", (req, res) => {
...
});
推荐阅读
- python - 子类化numpy:numpy方法返回ndarray而不是sublassed类型?
- php - PHP PDO Bind Param with having Clause,其中聚合函数与变量混合
- arrays - 如何通过两个键对多维数组进行排序
- java - IntelliJ 插件:以编程方式编辑运行配置设置和/或从上下文创建
- c - 如何在 Visual Studio 调试控制台中生成 BACKSPACE?
- javascript - Telegraf : 发送动画后发送消息
- android - 从从 Fragment 调用的自定义 AlertDialog 中获取选定的 RadioButton
- android - 运行方式包:不可调试
- laravel - Laravel Sancrum/气闸
- image - 是什么导致了 Flutter 平台之间图像宽度/覆盖率的差异?