如何为 ASP.NET OData WebApi 形成 PATCH 的主体?

How do I form the body of a PATCH for a ASP.NET OData WebApi?

我是 PATCH|MERGE 的新手,想知道如何在客户端使用它。我不确定在 JSON.

中的有效负载主体中发送什么

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

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

如果您 Google 寻求答案,您将看到 JSON 补丁的各种示例,其中 JSON 有效负载描述了一个或多个操作,例如这个 replaces/updates一个值:

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"
}