Postman中设置带多斜杠的Http GET请求报错,求解决方法
问题分析与解决建议
错误原因
你的API路由[HttpGet("Transactions/Speciality/{id}")]定义的是路径参数,要求id必须作为URL路径的一部分(比如/Tradings/Transactions/Speciality/1)。但你用?id=1这种查询参数的方式请求时,ASP.NET Core的路由系统会把路径里的Speciality当成{id}的取值,而这个字符串显然不符合id的数字类型要求,所以抛出了验证错误。
解决办法
有两种可行的方案,根据你的需求选择:
方案1:修改请求URL匹配路由定义
直接按照API设计的正确格式请求,把id放在路径里:
{{host}}/Tradings/Transactions/Speciality/1
这是最贴合现有代码的方式,不需要修改后端代码,直接调整Postman的请求URL即可。
方案2:修改后端路由支持查询参数
如果需要支持用查询参数传递id,可以修改TradingsController里的路由定义,把{id}改成查询参数的形式:
// 方式一:仅支持查询参数 [HttpGet("Transactions/Speciality")] public IActionResult YourActionName(int id) { // 业务逻辑代码 } // 方式二:同时支持路径参数和查询参数 [HttpGet("Transactions/Speciality/{id?}")] public IActionResult YourActionName(int id) { // 业务逻辑代码 }
第二种方式里的{id?}表示id是可选的路径参数,这样无论是/Tradings/Transactions/Speciality/1还是/Tradings/Transactions/Speciality/?id=1都能正常匹配。
内容的提问来源于stack exchange,提问作者Rich
相关产品推荐
相关产品推荐

