繁体   English   中英

带有 POST 请求的 Express JS 路由在 Postman 中返回 404 无法 GET 错误

[英]Express JS route with POST request returns 404 Cannot GET error in Postman

我正在使用 express 和 body-parser 在 Nodejs 中创建 API。 我能够使用邮递员成功发出 GET 请求,但是在使用 POST 请求时,它总是抛出错误404 not found 无法 GET /

  • 快递版本:@4.17.1
  • 正文解析器版本:@1.19.0

请检查下面的代码

server.js 文件

require('dotenv').config();
const express = require("express");
const http = require("http");

var addRequestId = require('express-request-id')();
const requestIp = require('request-ip');
const cron = require("node-cron");
const cluster = require('cluster');
const os = require('os');
const v1 = require('./routes/v1');
const jobs = require('./routes/jobs/sync_job');
const bodyParser = require("body-parser");

// Check if current process is master.
if (cluster.isMaster) {

  // Get total CPU cores.
  const cpuCount = os.cpus().length;

  // Spawn a worker for every core.
  for (let j = 0; j < cpuCount; j++) {
    cluster.fork();
  }



  var port = parseInt(3000);
  var app = express();

  var server = http.createServer(app);
  app.use(addRequestId);
  app.use(requestIp.mw())
  app.use(bodyParser.json({limit: '50mb'}));
  app.use(bodyParser.urlencoded({limit: '50mb', extended: false}));
  server.listen(port, () => { })
  console.log("SERVER UP AND RUNNING");

  app.use('/v1/jp', require('./routes/report_center'));



}


cluster.on('exit', function (worker) {
  console.log(`Worker ${worker.id} died'`);
  console.log(`Staring a new one...`);
  cluster.fork();
});

报告中心.js

const moment = require('moment');
const express = require('express');
const bodyParser = require("body-parser");
const reports = express.Router();

const mysql = require('mysql');
const async = require("async");
const constants = require('./v1/constant.js');
var _ = require('lodash');


var pool = mysql.createPool({
    connectionLimit: 1000,
    host: process.env.DB_HOST,
    port: process.env.DB_PORT,
    user: process.env.DB_USER,
    password: process.env.DB_PASS,
    database: process.env.DB_DBNAME,
    charset: process.env.DB_CHARSET,
    timezone: 'UTC' + '05:30'
});

/*########################
Middleware  Starts
#########################*/

reports.use(bodyParser.json());
reports.use(bodyParser.urlencoded({
    extended: true
}));

reports.use(function (req, res, next) {
    console.log(req.url)
    pool.getConnection(function (err, con) {
        if (err) {

            res.send(JSON.stringify({
                "error_status": true,
                "error": constants.err_desc.error_409,
                "message": constants.customMessage.DB_CON_FAILED
            }))
        } else {

            var queryTofindClient = mysql.format(`select * from client where api_key = ? LIMIT 1;`, [req.headers['api_key']]);

            console.log(queryTofindClient)
            con.query(queryTofindClient, (err, queryTofindClient_res) => {
                if (err) {

                    res.send(JSON.stringify({
                        "error_status": true,
                        "error": constants.err_desc.error_500,
                        "message": constants.customMessage.QUERY_FAILED
                    }))
                } else {

                    if (queryTofindClient_res.length == 0) {
                        res.send(JSON.stringify({
                            "error_status": true,
                            "error": constants.err_desc.error_401,
                            "message": constants.customMessage.UNAUTHORISED
                        }))
                    } else {

                        res.setHeader("Access-Control-Allow-Origin", "*");
                        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS,');
                        res.setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept,x-access-token');
                        res.setHeader('Access-Control-Allow-Credentials', true);
                        res.setHeader('Content-Type', 'application/json');
                        next();

                    }
                }
            })
        }
        con.release();
    })

})

/*########################
Middleware  ENDS
#########################*/



reports.get("/get_api", function (req, res) {
    console.log(req.body);
    res.send('Ok');
});

reports.post("/post_api", function (req, res) {
    console.log(req.body);
    res.send('Ok');
});


module.exports = reports;

屏幕截图中的以下错误在此处输入图片说明

经过两天的努力,找到了被称为邮递员的罪魁祸首,他用不同的发件人姓名递送我的信件,我的意思是它只是将所有方法路由到 GET 类型。

默认情况下,屏幕截图中的以下设置已关闭。

在此处输入图片说明

我只是希望它可以帮助那些不应该感到沮丧并节省时间而不是像我这样的人

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM