如何在节点 js API 中使用 apache 基准测试传递 POST 数据



我正在调用API内置节点js,并使用POST方法将正文作为JSON传递。 JSON 文件包含参数作为文件wallet_view.json

{"version":4.2,"auth_token":"0625d8042e2b2a04c5770f54a0c7a83d","page":1}

和节点 js 的索引文件:

const express = require('express');
const app = express();
const process = require('process');
const config = require('./config/config.js');
app.use(express.raw());
app.use(express.urlencoded({ extended: true }));
process.on('uncaughtException', function (error) {
console.log('Uncaught Exception: ' + error);
});
app.use((req, res, next) => {
console.log(req.originalUrl);
console.log(req.body);
const routes_handler = require('./routes/index.js')(app, express, req);
next();
});
app.listen(config.SERVER.PORT, () => {
console.log("Server running at Port " + config.SERVER.PORT);
});

我正在使用的命令如下:

ab -n 2 -c 1 -T 'application/x-www-form-urlencoded' -p ./wallet_view.json -A "username:password" -v 4 http://domainname.com/wallet/view

但是,现在在req.body的控制台日志中,我得到的输出为

{ '"version":4.2,"auth_token":"0625d8042e2b2a04c5770f54a0c7a83d","page":1': '' }

这是错误的 JSON 格式。这样我就无法req.body.auth_token.任何人都可以建议我应该在 ab 命令中进行什么样的修改吗?

内容类型应application/json而不是application/x-www-form-urlencoded

尝试这样,

ab -n 2 -c 1 -T 'application/json' -p ./wallet_view.json -A "username:password" -v 4 http://domainname.com/wallet/view

我明白了,这是我传递的请求格式的问题。 我正在传递请求作为JSON

{"version":4.2,"auth_token":"0625d8042e2b2a04c5770f54a0c7a83d","page":1}

由于 API 请求将始终以表单编码和 Node.js 文件的形式出现,因此我正在使用express.raw()

app.use(express.raw());
app.use(express.urlencoded({ extended: true })); 

所以这是错误的格式。 因为我使用内容类型作为'application/x-www-form-urlencoded'.

所以我应该使用请求格式为

version=4.2&auth_token=0625d8042e2b2a04c5770f54a0c7a83d&page=1

这样我就解决了问题。 谢谢。

最新更新