You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 6 Web API使用Postman发送PUT请求更新参数遇问题求助

问题解决步骤

1. 修正请求URL

你的Update方法使用[HttpPut("{id}")]路由,假设控制器标注了[Route("api/[controller]")](比如控制器名为ItemsController),正确的请求URL应该是:

https://localhost:7235/api/items/4

之前的https://localhost:7235/api/4缺少控制器路由部分,无法匹配到目标接口;https://localhost:7235/api/items?id=4用了查询参数方式,和方法定义的路由参数{id}不匹配,所以也无法命中接口。

2. 对齐请求体与命令类的字段映射

代码中判断id != command.Id,但请求体里的字段是itemId,这会导致模型绑定后command.Id为默认值(0),进而触发BadRequest。

两种解决方式二选一:

  • 修改请求体JSON,将"itemId": 4改为"Id": 4:
{
    "Id": 4,
    "itemNameAR": "قلم",
    "itemNameEN": "pen2",
    "costTypeId": 1,
    "minLimitQunatity": 1,
    "costAccountID": 1,
    "departmentID": 1,
    "itemCategoryId": 1,
    "description": "1",
    "hasExpireDate": true,
    "isActive": true,
    "createdBy": 1,
    "modifiedBy": 1,
    "createdDate": "0001-01-01T00:00:00",
    "modifiedDate": "0001-01-01T00:00:00",
    "itemattribute": null
}
  • 或者修改UpdateItemCommand类,将Id属性改为ItemId,同时更新方法中的判断逻辑:
[HttpPut("{id}")]
public async Task<IActionResult> Update(int id, UpdateItemCommand command)
{
    if (id != command.ItemId)
    {
        return BadRequest();
    }
    return Ok(await Mediator.Send(command));
}

3. 处理必填字段验证错误

返回的400错误提示Fax、City等字段必填,说明UpdateItemCommand类中这些字段被标注了[Required]特性,但请求体中未包含。

根据实际业务需求处理:

  • 如果这些字段不需要作为必填项,移除UpdateItemCommand类中对应字段的[Required]特性;
  • 如果业务上必须填写,在请求体JSON中添加这些字段的有效值。

内容的提问来源于stack exchange,提问作者ahmed barbary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:31:11