尝试在.Net Core 3.1 Web API上调用PATCH端点时收到400 Bad Request错误

问题描述

尝试在Web API(.Net Core 3.1)上调用PATCH终结点时收到 400错误的请求,但我不知道为什么。我的动作方法如下:

using Microsoft.AspNetCore.JsonPatch;

namespace PropWorx.API.Controllers
{
    [Route("api/[controller]")]
    [ApiController]    
    public class OwnersController : ControllerBase

        [HttpPatch("{id:int}")]
        public async Task<ActionResult<Owner>> PatchOwner([FromRoute] int id,[FromBody] JsonPatchDocument<Owner> patchDoc)
        {
            if (patchDoc == null)
                return BadRequest(ModelState);

            var owner = await _context.Owners.FindAsync(id);

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

            patchDoc.ApplyTo(owner,ModelState);

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

            await _context.SaveChangesAsync();

            return new ObjectResult(owner);
        }
    }
}

我将其发送给邮递员

{
  "Op": "replace","Path": "/PropertyInspectId","Value": 10764
}

(我也尝试使用字符串“ 10764”而不是整数)

(请参见下图)

PropertyInspectId是可为空的整数,并且绝对存在于模型中并正确拼写。 在API的action方法甚至执行第一行代码之前,我会立即收到400错误响应。

enter image description here

有什么想法吗?

解决方法

根据@CodeCaster的评论,问题在于JSON PATCH是一个数组。我是通过邮递员的一个实体发送的。使用此链接CodeCaster的用户向我提供了相同的问题:An error when sending PATCH with Postman to Asp.net Core webapi

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...