Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express端点对POST返回404,对GET返回200_Javascript_Node.js_Api_Express_Post - Fatal编程技术网

Javascript Express端点对POST返回404,对GET返回200

Javascript Express端点对POST返回404,对GET返回200,javascript,node.js,api,express,post,Javascript,Node.js,Api,Express,Post,使用Express为API构建了一个简单的节点应用程序。发送GET请求非常有效,我得到的状态为200。但是,当我向同一个端点发送POST请求时,我收到的状态是404 Not found 我对Postman和cURL都进行了测试,结果都是一样的 server.js const express = require("express") const mongoose = require("mongoose") const config = require("config") const axios =

使用Express为API构建了一个简单的节点应用程序。发送GET请求非常有效,我得到的状态为200。但是,当我向同一个端点发送POST请求时,我收到的状态是404 Not found

我对Postman和cURL都进行了测试,结果都是一样的

server.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()
})

routes/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;
以下是邮递员请求和结果的图像 邮递员拿200

邮递员邮政404


我希望得到get和POST请求的res.json成功消息,但是我只得到get的res.json成功消息,我得到一个404 Not Found for the POST请求

您在POST路由定义中放错了右括号:

router.post("/", (req, res) => {
  ...
});

您在POST管线定义中放错了右括号:

router.post("/", (req, res) => {
  ...
});

你能用一些证据来证明这一点吗?例如,开发者工具“网络”选项卡声称实际发生了什么?(POST之前几乎总是有浏览器的选项飞行前呼叫,以验证POST是否是您要向其发送数据的路线的合法动词,那么“网络”选项卡上说实际发生了什么?)您能提供一些证据来支持这一点吗?例如,开发者工具“网络”选项卡声称实际发生了什么?(POST几乎总是在浏览器的选项飞行前调用之前进行,以验证POST是否是您要向其发送数据的路线的合法动词,那么“网络”选项卡上说实际发生了什么?)您是最好的。花了12个多小时来解决这个问题,我的第一个问题是Stackoverflow。在角落里哭泣哈哈,很高兴我能帮上忙!我知道这种感觉:)你是最好的。花了12个多小时来解决这个问题,我的第一个问题是Stackoverflow。在角落里哭泣哈哈,很高兴我能帮上忙!我知道这种感觉:)