使用 Swagger 为 Web API 模型 类 设置命名规则
Setting up naming rules for Web API model classes using Swagger
下午好。
我有以下控制器方法:
/// <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}\"");
}
}
使用的方法是通用的class 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 的 class。
问题:
是否可以使用SWAGGER配置工具或其他机制来确定class的名称,例如使用以下算法:
$"{nameof(T)}Result"
对于 class 具有以下名称:DtoWorkTypeResult
不像现在:DtoWorkTypeDtoResult
您可以使用方法CustomSchemaIds来配置swagger:
services.AddSwaggerGen(c =>
{
//other code
c.CustomSchemaIds(p => p.Name);
});
下午好。 我有以下控制器方法:
/// <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}\"");
}
}
使用的方法是通用的class 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 的 class。
问题: 是否可以使用SWAGGER配置工具或其他机制来确定class的名称,例如使用以下算法:
$"{nameof(T)}Result"
对于 class 具有以下名称:DtoWorkTypeResult
不像现在:DtoWorkTypeDtoResult
您可以使用方法CustomSchemaIds来配置swagger:
services.AddSwaggerGen(c =>
{
//other code
c.CustomSchemaIds(p => p.Name);
});