如何向本地服务器发出带body的curl请求

6jjcrrmo  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(170)

我有NodeJS代码,看起来像这样

app.post("/calc", (req, res) => {
    res.status(200).json({
        success: true, 
        msg: req.body.msg,
    })
})

字符串
我不能使用Postman,这就是为什么我想使用curl测试这个端点。怎么办?
我尝试了这样的代码,但它返回了一个错误

curl -X POST http://localhost:3000/calc -H "Content-Type: application/json" -d '{"msg": 123456}'


错误代码:

Cannot bind parameter 'Headers'. Cannot convert the "Content-Type: application/json" value of type "System.String" to type "S
ystem.Collections.IDictionary".

syqv5f0l

syqv5f0l1#

这看起来像是Windows欺骗了你,让你使用curl Invoke-webrequest别名,而不是 * 真实的 * curl工具。
尝试调用curl作为curl.exe来避免这种麻烦。
另外:从该命令行删除-X POST-d已经意味着POST。

atmip9wb

atmip9wb2#

我想你在express端漏掉了这段代码。
因为 Postman 也不工作。

app.use(express.json());

字符串

Demo代码,保存为server.js文件

const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors())

// for form-data of Body
const multer = require('multer');
const forms = multer();
app.use(forms.array()); 

// for x-www-form-urlencoded of Body
app.use(express.urlencoded({ extended: true }))

// for raw JSON of Body
app.use(express.json()); 

app.post('/calc', (req, res)=> {
    res.status(200).json({
        success: true, 
        msg: req.body.msg,
    })
})

app.listen(3000, () => { console.log("Listening on : 3000") })

安装依赖

npm install express cors multer

按节点运行

node server.js

通过curl测试if

curl --location 'http://localhost:3000/calc' \
--silent \
--header 'Content-Type: application/json' \
--data '{
    "msg": 123456
}'

结果


的数据

Postman 测试


相关问题