【问题标题】:Updating database table using HTTP PATCH verb in Postman在 Postman 中使用 HTTP PATCH 动词更新数据库表
【发布时间】:2016-07-08 01:24:05
【问题描述】:

我正在开发一个 Azure 移动服务,其中包含一个带有 Patch 方法的表控制器:

public Task<User> PatchUser(string id, Delta<User> patch)
{
    return UpdateAsync(id, patch);
}

我在本地托管我的移动服务并想测试 Patch 的工作方式。我正在使用 Postman 来执行此操作,但我不断收到 HTTP 错误 400 并返回以下响应:

{ "message": "HTTP 请求不包含有效的实体主体。 请确保存在实体主体和关联的 Content-Type 请求中存在标头。” }

这些是我附加到 HTTP PATCH 请求的标头:

这是请求正文:

我在this 网站上看到 POST 请求需要包含这样的主体:[ { "op": "replace", "path": "/email", "value": "new.email@example.org" } ]

如果我提供您可以在下面的屏幕截图中看到的请求正文,我仍然会得到相同的响应:

这是表控制器所基于的 User 类:

public class User : EntityData
{
    public string Gender { get; set; }
}

我应该如何通过 Postman 正确发送补丁请求?

【问题讨论】:

  • 如何使用您的第二个请求,但发送Gender 时使用大写G 而不是小写g。你的模型定义了Gender,而不是gender
  • 谢谢,成功了!
  • application/json 作为 PATCH payload 的语义未定义;你应该看看 RFC 6902 (tools.ietf.org/html/rfc6902) 和 7386 (tools.ietf.org/html/rfc7386)。

标签: c# http azure postman http-patch


【解决方案1】:

您应该使用第二个请求,但发送“性别”属性时使用小写 g 而不是大写 G。这是您在模型中定义此属性的方式,JSON 序列化器/反序列化器默认区分大小写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-30
    • 2012-04-04
    • 2016-08-12
    • 2020-05-15
    • 2017-03-09
    • 2013-04-24
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多