【问题标题】:Setting up naming rules for Web API model classes using Swagger使用 Swagger 为 Web API 模型类设置命名规则
【发布时间】:2022-02-11 14:12:33
【问题描述】:

下午好。 我有以下控制器方法:

/// <summary>
/// Метод создания вида работ
/// </summary>
/// <param name="name">Название вида работ</param>
/// <param name="workUnitId">ИД единицы вида работ</param>
/// <returns>Результат создания вида работ</returns>
[Route(nameof(CreateWorkType))]
[HttpPost]
public async Task<ActionResult<DtoResult<DtoWorkType>>> CreateWorkType(string name, Guid? workUnitId = null)
{
     try
     {

          var result = await _workTypeService.CreateWorkType(name, workUnitId).ConfigureAwait(false);

          return Ok(result);
     }
     catch
     {
          return BadRequest($"Ошибка при выполнении создания вида работ с именем \"{name}\" и ИД единицы работ \"{workUnitId}\"");
     }
}

使用的方法是泛型类DtoResult

/// <summary>
/// Класс результат
/// </summary>
/// <typeparam name="T">Тип данных сущности</typeparam>
public class DtoResult<T> where T : class, new()
{
    #region Свойства

    /// <summary>
    /// Результат проверки сущности типа данных <see cref="T"/>
    /// </summary>
    public DtoValidationResult Validation { get; set; } = new DtoValidationResult();

    /// <summary>
    /// Данные сущности типа данных <see cref="T"/>
    /// </summary>
    public T Data { get; set; } = new T();

    #endregion
}

“业务”类DtoWorkType

 /// <summary>
/// Класс вида работ
/// </summary>
public class DtoWorkType
{
    #region Свойства

    /// <summary>
    /// ИД вида работ
    /// </summary>
    public Guid Id { get; set; }

    /// <summary>
    /// Название вида работ
    /// </summary>
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// Единица работ для вида работ
    /// </summary>
    public DtoWorkUnit WorkUnit { get; set; } = new DtoWorkUnit();

    #endregion
}

使用 Swagger,自动创建了一个名为 DtoWorkTypeDtoResult 的类。

问题: 是否可以使用 SWAGGER 配置工具或其他机制来确定类的名称,例如使用以下算法:

$"{nameof(T)}Result"

类具有以下名称:DtoWorkTypeResult

不像现在:DtoWorkTypeDtoResult

【问题讨论】:

  • 嗨,@Anton,您定制 Swagger 吗?在默认的 Swagger 中,它不会自动创建类名,您可以在 startup or program(.Net6) 中提供您的 swagger 配置吗?这是关于自定义招摇的document

标签: c# swagger asp.net-core-webapi .net-6.0


【解决方案1】:

你可以使用方法CustomSchemaIds来配置swagger:

 services.AddSwaggerGen(c =>
        {
            //other code
            c.CustomSchemaIds(p => p.Name);

        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多