【问题标题】:POST Request to PUT RequestPOST 请求到 PUT 请求
【发布时间】:2021-11-16 05:52:04
【问题描述】:

" 我正在学习的一门开源课程对全栈开发有以下提示: 3.17:电话簿数据库,step5 如果用户尝试为电话簿中已存在姓名的人创建新的电话簿条目,则前端将尝试通过向条目的唯一 URL 发出 HTTP PUT 请求来更新现有条目的电话号码。 修改后端以支持此请求。 进行更改后验证前端是否正常工作。"*

这似乎需要在 app.post 请求内部调用一个 express app.put 请求。有什么我在这里想念的吗?您如何使用 mongoDB/mongoose/expresss 处理这种逻辑?我当前的邮政编码粘贴在下面。

谢谢

app.post('/api/persons',(req,res) => {
  const body = req.body
  const containsNameNumber = body.name && body.number

  if(!containsNameNumber){
    return res.status(400).json({
      error:"must specify a name and a number"
    })
  }

  const phone = new Person({
    name: body.name,
    number:body.number
  })

  phone.save().then(savedPerson => {
      res.json(savedPerson)
    })
})

【问题讨论】:

    标签: javascript mongodb express http mongoose


    【解决方案1】:

    我认为你误解了一件事,请检查PUT 的定义来自RFC7231

    PUT 方法请求目标资源的状态为 由表示定义的状态创建或替换 包含在请求消息负载中

    “被创造”的部分很重要。因此使用PUT,如果资源存在,它将被更新,但如果不存在,则会创建。

    如果目标资源没有当前表示并且 PUT 成功创建一个,然后源服务器必须通知 通过发送201 (Created) 响应的用户代理。

    因此您只需调用PUT 并检查是否存在更新(返回200 Ok)或不存在创建(返回201 Created)。

    【讨论】: