在node.js中使用Restful API和bodyParser时出错

时间:2019-02-28 11:55:31

标签: node.js express

我运行了以下代码,并在命令提示符下使用了以下语句:

curl -H "Content-Type: application/json" -X POST -d '{"first_name": "Moonis", "last_name": "Rasheed"}' "http://localhost:3000/profile"

curl.exe -H "Content-Type: application/json" -X PUT -d '{"first_name": "Osama", "last_name": "Naveed"}' "http://localhost:3000/profile"

那是我在这张照片中遇到错误的时候。我不知道为什么会这样,因为按照我的逻辑,它应该在配置文件中添加数据 enter image description here

const express = require('express');
const app = express();
const bodyParser=require('body-parser');

app.use(bodyParser.json());


let profile = {
 username: 'azat',
 email: '[reducted]',
 url: 'http://azat.co'
 };
app.get('/profile', (req, res)=>{
  res.send(profile);
 })
app.post('/profile', (req, res) => {
    profile = req.body;
    console.log("created",profile);
    res.sendStatus(201);
 })
app.put('/profile', (req, res)=>{
    Object.assign(profile, req.body);
    console.log("updated",profile);
    res.sendStatus(204);
})
app.delete('/profile', (req, res)=>{
   profile ={};
   console.log("deleted");
   res.sendStatus(204);
})

app.listen(3000);

1 个答案:

答案 0 :(得分:0)

尝试像这样格式化curl命令:

curl -H "Content-Type: application/json" -X POST -d "{\"first_name\": \"Moonis\", \"last_name\": \"Rasheed\"}" "http://localhost:3000/profile"

基本上,在data参数周围使用双引号,并转义json内的内部双引号。