当没有提到内容类型时,如何在Express.JS中处理CURL POST请求



我正在向node.js服务器发送以下CURL请求。但当我试图提取数据时,它以一种奇怪的格式显示,我不知道如何解析。

CURL请求:

curl-X POST-d‘{quot;url":;http://localhost:8000/event"}'http://localhost:8000/subscribe/topic1

数据输出

{ '{ "url": "http://localhost:8000/event"}': '' }

处理请求的代码

app.post('/subscribe/:topic', (req, res) => {
const topic = req.params.topic;
/** Prnts a weird format of data !!! */
console.log(req.body)

let url = req.body.url;
if (subscribeMap.has(topic)) { subscribeMap.get(topic).push(url) } else { subscribeMap.set(topic, [url]); }
res.send(true)
})

我的快递服务器正在使用这样的身体解析器:

const express = require('express');
const bodyParser = require('body-parser');
const axios = require('axios');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

您需要将此选项添加到您的CURL请求中:

-H "Content-Type: application/json"

这样使用:

curl -X POST -d '{"url": "http://localhost:8000/event"}' -H "Content-Type: application/json" http://localhost:8000/subscribe/topic1

最新更新