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

How to pass POST data using apache benchmark in node js API

我正在调用 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 请求总是以 form-urlencoded 形式出现在 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

我就是这样解决问题的。 谢谢。