Assuming you have the following object:
public class Person {
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
}
and got a PATCH request as below:
[{"replace": "/name", "value": "tugberk"}]
and assuming we have a json-patch formatter. Wouldn't you get the following result?
public class PeopleController : ApiController {
//new Person { Name = "tugberk", Surname = null, Age = 0 }
public Person PatchPerson(Person person) {
//...
}
}
It would have a collection of PatchingOperation objects like the RavenDB API. The Media Type Formatters job will be simply to know how to create one of these objects based on the JSON-Patch specification. It would be down to the logic in the controller to understand how to patch the object. This, in my opinion, is the tough part - translating a patch operation into a n update on an object.