为什么我的.NET Core WebAPI指定POST请求返回404但同控制器GET正常
问题原因
- 路由不匹配:你定义的POST接口路由模板
[HttpPost("Authenticate/{deviceIdentifier}")]中,deviceIdentifier被声明为路径参数,必须拼接在URL路径中才能被路由系统识别。但你测试时将deviceIdentifier作为查询参数放在?之后,和预设的路由规则不匹配,因此返回404状态码。 - 额外排查点:确认Postman中发送请求时选择的请求方法为POST,若误选GET、PUT等其他方法也会触发404报错。
解决方法
两种方案二选一即可:
方案1:调整请求地址(不修改后端代码)
将Postman中的请求路径改为路径传参形式,请求方法保持POST:
https://localhost:5002/Main/Authenticate/bd78209e-e3a0-4576-a17c-832838ce6495
方案2:调整后端接口路由(保留原请求地址格式)
修改POST接口的路由特性,移除路由模板中的路径参数声明,让参数默认从查询参数绑定:
[HttpPost("Authenticate")] public async Task<ActionResult<ServiceResponse<AuthorizedDoorsDto>>> Authenticate(Guid deviceIdentifier) { Guid id = Guid.Parse(User.Claims.FirstOrDefault(d => d.Type == ClaimTypes.NameIdentifier).Value); return Ok(await mainService.Authenticate(id, deviceIdentifier)); }
调整后你原来的Postman请求地址即可正常使用。
内容的提问来源于stack exchange,提问作者CuriousCharlie
相关产品推荐
相关产品推荐

