Javascript 当未提及内容类型时,如何在Express.JS中处理CURL POST请求

Javascript 当未提及内容类型时,如何在Express.JS中处理CURL POST请求,javascript,node.js,express,curl,post,Javascript,Node.js,Express,Curl,Post,我正在向node.js服务器发送以下CURL请求。但是当我试图提取数据时,它以一种奇怪的格式显示出来,我不知道如何解析 卷曲请求: curl-X POST-d'{“url”:”http://localhost:8000/event"}' http://localhost:8000/subscribe/topic1 数据输出 app.post('/subscribe/:topic', (req, res) => { const topic = req.params.topic;

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

卷曲请求:

curl-X POST-d'{“url”:”http://localhost:8000/event"}' http://localhost:8000/subscribe/topic1

数据输出

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)
})
{{“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)
})
我的express服务器使用的主体解析器如下:

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 -X POST -d '{"url": "http://localhost:8000/event"}' -H "Content-Type: application/json" http://localhost:8000/subscribe/topic1

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

-H "Content-Type: application/json"
像这样使用它:

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 -X POST -d '{"url": "http://localhost:8000/event"}' -H "Content-Type: application/json" http://localhost:8000/subscribe/topic1

你能提供数据输出吗?@TasosBu嘿,我的糟糕,我忘了添加数据输出。输出是这样的“{{”url:“}”:“}”:“}”哦,我看到了问题。但我不是那个发送CURL请求的人。当用户没有在其CURL中指定内容类型时,我可以将其作为JSON处理吗request@KunalGulati您可以使用
头盔
强制执行这种类型的标题。另一个选项是JSON.parse()解析正文的文本,但我建议您告诉发送curl请求的人使用这个标题!