如何解决尝试在.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错误响应。
有什么想法吗?
解决方法
根据@CodeCaster的评论,问题在于JSON PATCH是一个数组。我是通过邮递员的一个实体发送的。使用此链接CodeCaster的用户向我提供了相同的问题:An error when sending PATCH with Postman to Asp.net Core webapi
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。