Ejemplo n.º 1
0
        public IActionResult Put(int id, [FromBody] TodoModification todo)
        {
            if (todo == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var model = TodoService.Current.Todos.SingleOrDefault(x => x.Id == id);

            if (model == null)
            {
                return(NotFound());
            }

            model.TdName = todo.TdName;
            model.TdTime = todo.TdTime;

            //return Ok(model);
            return(NoContent());
        }
Ejemplo n.º 2
0
        public IActionResult Patch(int id, [FromBody] JsonPatchDocument <TodoModification> patchDoc)
        {
            if (patchDoc == null)
            {
                return(BadRequest());
            }
            var model = TodoService.Current.Todos.SingleOrDefault(x => x.Id == id);

            if (model == null)
            {
                return(NotFound());
            }

            //创建一个 TodoModification
            var toPatch = new TodoModification
            {
                TdName = model.TdName,
                TdTime = model.TdTime
            };

            //将 patchDoc 添加
            patchDoc.ApplyTo(toPatch, ModelState);

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //再次手动验证(防止非法修改)eg : [ { "op":"remove", "path":"/tdName" } ]
            TryValidateModel(toPatch);
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            model.TdName = toPatch.TdName;
            model.TdTime = toPatch.TdTime;

            return(NoContent());
        }