我正在调用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
这样我就解决了问题。 谢谢。