【问题标题】:OData + Swagger. URL generationOData + 招摇。网址生成
【发布时间】: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 参数中描述为

花了一整天的时间试图弄清楚这一点。将不胜感激。

【问题讨论】:

    标签: .net-core swagger odata


    【解决方案1】:

    自己找到了解决方案。我正在使用 OData 8,似乎不需要将方法参数标记为 [FromODataUri]

    [EnableQuery]
    public SingleResult<User> Get(int key)
    {
        //...
    }
    

    没有它,Swagger 会生成正确的链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-02
      • 2016-08-30
      • 2019-04-06
      • 2017-12-19
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多