REST API:PUT但不需要json中的所有数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了REST API:PUT但不需要json中的所有数据相关的知识,希望对你有一定的参考价值。

这是我的控制器更新放置用户数据。控制器最多可接受4个值。如果我只给这条路线发一个名字,我想这样做。这只会改变名字,其余的将保持不变。 (它不会是空的)。是否有可能做到这一点?我是否必须在redux-saga中执行此操作,即如果它是空的,请将其更新

// Update basic User's Data
exports.setUserdata = (req, res) => {
  const id = req.params.userId;
  User.update(
    {
      password: req.body.password,
      name: req.body.name,
      surname: req.body.surname,
      email: req.body.email,
    },
    { where: { id } },
  )
    .then(() => {
      res.status(200).json({ success: true });
    })
    .catch(() => {
      res.status(500).json({ error: 'Internal server error' });
    });
};
答案

传递要更新的参数并且不传递其他密钥。

如果req.body只包含name键,你可以从req.body中获取这4个键。

const updateParams = _.pick(req.body, ['name', 'password', 'surname', 'email'])
User.update(updateParams, {  where: { id } })

如果req.body具有值为nullundefined的其他属性,则可以在拾取后过滤它们。

const updateParams = _.chain(req.body).pick(['name', 'password', 'surname', 'email']).filter().value()
User.update(updateParams, {  where: { id } })

当然这取决于您使用的ORM,但我相信大多数ORM都不会更新根本没有传递的属性。

以上是关于REST API:PUT但不需要json中的所有数据的主要内容,如果未能解决你的问题,请参考以下文章

REST API:请求正文为 JSON 或纯 POST 数据?

在 Azure 存储 [REST] [Azure Blob] 中对 PUT Blob 的 REST api 调用中的身份验证失败

Mailchimp API Put 或 Patch 使用 Delphi REST

(二)Django REST实践:最简单的REST API实现

如何将此 curl 命令转换为 Ruby rest-client put 请求?

POST / PUT 上的 Java Spring REST API 状态 400 响应