Asp.Net Core Web API 补丁 ID 始终为 NULL

Asp.Net Core Web API Patch Id Is Always NULL

我有一个 asp.net 核心网络 api,其端点使用 PATCH。需要更新记录的单个字段。我有端点设置来接受 Json 补丁文档正文中的记录 ID。

这是我的端点当前的设置方式。我只有足够的代码来检查我是否可以找到一个匹配的 ID,但它没有按预期工作。

[HttpPatch("{id}")]
    public IActionResult updateDescription( [FromRoute] string reportId, [FromBody] JsonPatchDocument<Reports> patchEntity)
    {

        //reportId is null... not showing the id being passed in the api call
        if (patchEntity == null)
        {
            return Ok("body is null");
        }
     

        var entity = _context.Reports.SingleOrDefault(x => x.ReportId == reportId);

        if (entity == null)
        {
            return Ok(reportId + " Why is entity null!");
        }

        //patchEntity.ApplyTo(entity, ModelState);

        return Ok(entity + " found!");
    }

当我调用 api 传递 Id 时,报告 ID 参数显示为空。

report ID parameter shows null

API 调用:http://localhost:4200/api/updateDesc/A88FCD08-38A3-48BB-8E64-61057B3C0B1F 我正在使用邮递员, JSON 正文正被 API 端点正确发送和读取。 body return

我错过了什么导致路由的 ID 未分配给 reportID 参数?

我也尝试了一个稍微不同的终点,结果相同

[HttpPatch("{id}")]
    public IActionResult updateDescription(string reportId, [FromBody] JsonPatchDocument<Reports> patchEntity)
    {

        //reportId is null... not showing the id being passed in the api call
        if (patchEntity == null)
        {
            return Ok("body is null");
        }
     

        var entity = _context.Reports.SingleOrDefault(x => x.ReportId == reportId);

        if (entity == null)
        {
            return Ok(reportId + " Why is entity null!");
        }

        //patchEntity.ApplyTo(entity, ModelState);

        return Ok(entity + " found!");
    }

请立即尝试

[HttpPatch("{reportId}")]
    public IActionResult updateDescription( [FromRoute] string reportId, [FromBody] JsonPatchDocument<Reports> patchEntity)
    {