【发布时间】:2022-01-23 02:30:57
【问题描述】:
在我的 Net 6 Web-API 项目中,我使用的是 OData 和 Swagger(它是在创建项目时自动添加的)。
开箱即用,但 Swagger 生成的某些 URL 存在问题。
这是我的 OData 控制器:
public class UsersController : ODataController
{
// skipped for brevity
[EnableQuery]
public IActionResult Get()
{
return Ok(_dbContextRepo.Select<DbModel.User>());
}
[EnableQuery]
public SingleResult<User> Get([FromODataUri] int key)
{
return SingleResult.Create(_dbContextRepo.Select<User>().Where(u => u.Id == key));
}
}
SwaggerUI 输出:
当我尝试运行通过 Id 从 Swagger 获取实体的查询时,由于 url 错误而失败。
由于某种原因,Swagger 会生成如上图所示的查询参数和 URL。对于 OData,URL 必须是这样的(路径参数,https://swagger.io/docs/specification/describing-parameters/):
https://localhost:7250/api/Users/1
在 swagger.json 参数中描述为
花了一整天的时间试图弄清楚这一点。将不胜感激。
【问题讨论】: