node.js - 即使服务器出现错误,Node.js 中始终会收到 http 状态代码 200

标签 node.js http error-handling

我使用 Node 作为 React AppMicrosoft Dynamics Nav 之间的代理服务器。我在 ODataSOAP Web 服务中发出 CRUD 请求。当 Dynamics Nav Server 响应错误时,我需要在 React App 中显示该错误。问题是我总是在 Node.js 中收到 http 200 状态代码,即使我在服务器上收到错误(即 404)。这是 Node.js 和 Postman 中 put 请求的示例响应:

postman

enter image description here

Node.js

enter image description here

这是 server.js 文件:

const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const app = express();

const server = app.listen(5000, function() {
    console.log(new Date().toISOString() + ": server started on port 5000");
});

server.on('connection', (socket) => {
    console.log('New connection...');
});


app.use(bodyParser.urlencoded({ extended: false }));

// parse application/json
app.use(bodyParser.json());
app.use(cors());

//app.use(bodyParser.urlencoded({ extended: true }));

app.get('/', function (req, res) {
    res.send('Express for courier is working on IISNode!');
});

app.use(require('./routes/routesLogin'));
app.use(require('./routes/routesCustomers'));
app.use(require('./routes/routesContacts'));
app.use(require('./routes/routesPostCodes'));
app.use(require('./routes/routesCountriesRegions'));
app.use(require('./routes/routesDepots'));
app.use(require('./routes/routesPUOrder'));

这是放置请求的函数:

    ModifyPUOrder: function (req, res) {
        console.log('MODIFY');
        const PUOrderNo = req.body.puOrderNo;
        const updatedValue = req.body.updatedValue;
        console.log('MODIFY PU', PUOrderNo);
        console.log('UPDATEDVALUE', updatedValue)
        const url = `${base}/PUOrderCard('${PUOrderNo}')`;

        request =   `{ ${updatedValue} }`;
        
        put(username, password, url, request).then(response => {
            console.log(response);
            res.send(response);
        })
    },

任何帮助将不胜感激!

最佳答案

Express 中响应的默认状态代码是 200,您可以在调用 send 之前更改此值

res.status(400).send('Bad request')

关于node.js - 即使服务器出现错误,Node.js 中始终会收到 http 状态代码 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56594377/

相关文章:

angular - Firebase createUserWithEmailAndPassword() 返回 HTTP POST 错误失败以及错误对象

javascript - 在nodejs中将excel文件转换为json

node.js - 对文档调用精益会抛出 TypeError : lean is not a function

javascript - 确保以 JSON 格式接收 HTTP POST 请求并使用 REST API 将其保存到 MySQL

http - HTTP 规范中的 "subrange"是什么意思?

javascript - 无法处理请求,因为模态对话框或警报处于事件状态

javascript - 使用 gulp.watch 会抛出 "TypeError: Object #<Object> has no method ' watch'"

node.js - NodeJS 请求中对 API 的 cURL 调用

Python请求 - 打印整个http请求(原始)?

php - Grocery 加工: Display error message when updating database is failed