【问题标题】:Model not displaying in swagger UI .NET模型未在 swagger UI .NET 中显示
【发布时间】:2021-03-31 20:09:02
【问题描述】:

我编写的模型类 userQuery 没有出现在 Swagger UI 中。我已经在我的控制器文件中引用了它,所以我希望它会出现在 Swagger UI 中。我使用 SwashBuckle。我在这里错过了什么?

具有端点的控制器文件:

using Project.Models;

namespace Project.Controllers
{
    [HttpGet]
    [Authorize(Policy = "Read-Run")]
    [Route("byRoute/{element}")]        
    [Produces(typeof(EntityResult<EntityResponse>))]
    public async Task<IActionResult> ListEntities([FromQuery] userQuery entityMatch, string element)
    {
        return Ok((await _entityService.ListEntities(entityMatch, element)));
    }

}

模型类:

using System;

namespace Project.Models
{
    public class UserQuery
    {
        public int Id { get; set; }
        public DateTime? DateCreated { get; set; }
        public DateTime? DateUpdated { get; set; }        
    }
}

【问题讨论】:

    标签: c# .net swagger swagger-ui swashbuckle


    【解决方案1】:

    您似乎无法将复杂对象绑定到 Swashbuckle(或 OpenAPI)中的查询字符串参数:check this question

    您可以在控制器中使用三个不同的参数:Id、DateCreated 和 DateUpdated,并为每个参数使用 [FromQuery] 属性。

    您的端点将如下所示:

    public async Task<IActionResult> ListEntities(
        [FromRoute] string element,
        [FromQuery] int id, 
        [FromQuery] DateTime? dateCreated,
        [FromQuery] DateTime? DateUpdated
    )
    

    或者您可以在请求正文中传递对象并使用 [FromBody] 属性。但通常,您不应该将正文用于 GET 请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 2016-09-29
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多