.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
相关产品推荐
相关产品推荐

