Asp.Net Core JsonPatch使用

實體類

    public class School
    {
        public string Location { get; set; }
        public string Country { get; set; }
        public List<Student> Students { get; set; }
    }

    public class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

服務端程序

        [HttpPatch]
        public ActionResult Patch([FromBody]JsonPatchDocument<School> jsonPatch)
        {
            if (!ModelState.IsValid)
                return Ok(ModelState.Values);
            var s = new School
            {
                Location = "CN",
                Country = "SH",
            };
            jsonPatch.ApplyTo(s);
            return Ok(s);
        }

客戶端Postman測試

Add

不存在添加,存在則修改

[
    {
        "op": "add",
        "path": "/location",
        "value": "ab"
    },
    {
        "op": "add",
        "path": "/students",
        "value": [
            {
                "name": "zhang",
                "age": 1
            },
            {
                "name": "zhang",
                "age": 1
            }
        ]
    }
]

remove

刪除屬性或數組元素

[
    {
        "op": "remove",
        "path": "/location"
    },
    {
        "op": "remove",
        "path": "/students/0"
    },
    {
        "op": "remove",
        "path": "/students/"
    }
]

replace

修改,刪除,添加

[ 
    {
        "op": "replace",
        "path": "/location",
        "value":"QWER"
    },
    {
        "op": "replace",
        "path": "/students",
        "value": [
            {
                "name": "zhang",
                "age": 1
            },
            {
                "name": "zhang",
                "age": 1
            }
        ]
    }
]

move

移動

[
    {
    	"op":"move",
    	"from":"/students/0/name",
    	"path":"/location"
    }
]

copy

賦值

[
    {
    	"op":"copy",
    	"from":"/students/0/name",
    	"path":"/location"
    }
]

test

測試,如果返回的值相同,則返回成功狀態碼。錯誤會拋出異常

[
    {
    	"op":"test",
    	"path":"/students/0/name",
    	"value":null
    }
]

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章