【问题标题】:How do I form the body of a PATCH for a ASP.NET OData WebApi?如何形成 ASP.NET OData WebApi 的 PATCH 主体?
【发布时间】:2015-03-12 17:38:18
【问题描述】:

我是 PATCH|MERGE 的新手,想知道如何在客户端使用它。我不确定在 JSON 中的有效负载正文中发送什么。

这是一个人为的 C# POCO 模型示例,用于讨论。

public class Person
{
  public Guid Id { get; set; }
  public string FullName { get; set; }
  public int Age { get; set; }
}

【问题讨论】:

    标签: json rest http asp.net-web-api odata


    【解决方案1】:

    如果您在 Google 上寻找答案,您会看到各种 JSON 补丁示例,其中 JSON 有效负载描述了一项或多项操作,例如替换/更新值的操作:

    PATCH /people/guid123lalala HTTP/1.1    
    Content-Type: application/json-patch
    
    {
      "op": "replace",
      "path": "/FullName",
      "value": "Willy Lopez"
    }
    

    或者这个:

    PATCH /people/guid123lalala HTTP/1.1    
    Content-Type: application/json-patch
    
    [
      {"replace": "/FullName", "value": "Willy Lopez"}
    ]
    

    (我什至不确定 JSON 补丁是否正确。)

    但是,不支持application/json-patch 格式。因此,截至 2015 年 1 月,对于 WebApi 2.2 上的 OData,只需发送省略了不变属性的对象,就像使用普通 JSON 一样:

    PATCH /people/guid123lalala HTTP/1.1    
    Content-Type: application/json
    
    {
      FullName: "Willy Lopez"
    }
    

    【讨论】:

    • 如果使用 jQuery 发送消息,同样值得注意的是,您不能只设置 Content-Type 标头并传递数据对象。你必须stringify the object
    猜你喜欢
    • 2014-09-17
    • 2013-03-23
    • 1970-01-01
    • 2016-04-23
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 2016-02-12
    相关资源
    最近更新 更多