C# Swagger-UI 接口调用类作为参数如何显示类的属性描述
时间: 2024-03-09 21:50:58 浏览: 75
在 C# Swagger-UI 中,如果要在接口调用中使用类作为参数,并且希望在 Swagger-UI 中显示类的属性描述,可以使用 XML 注释来描述类和属性,然后使用 Swagger-UI 提供的 `ApplyXmlActionFilter` 类来应用这些注释。
具体而言,需要在 `SwaggerConfig.cs` 文件中注册 `ApplyXmlActionFilter` 类,并在 `WebApiConfig.cs` 文件中启用注释功能。以下是示例代码:
```csharp
// SwaggerConfig.cs
public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
// 设置 Swagger 文档信息
c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
// 使用 ApplyXmlActionFilter 应用 XML 注释
c.OperationFilter<ApplyXmlActionFilter>(thisAssembly);
// 设置 Swagger JSON 和 UI 的路径
var xmlPath = GetXmlCommentsPath();
c.IncludeXmlComments(xmlPath);
})
.EnableSwaggerUi(c =>
{
// 设置 Swagger UI 的参数
});
}
private static string GetXmlCommentsPath()
{
var basePath = AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory;
var xmlPath = Path.Combine(basePath, "MyApi.xml");
return xmlPath;
}
}
```
```csharp
// WebApiConfig.cs
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// 启用注释功能
var xmlPath = HttpContext.Current.Server.MapPath("~/App_Data/MyApi.xml");
config.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "My API");
c.IncludeXmlComments(xmlPath);
});
config.EnableSwaggerUi();
}
}
```
在使用类作为参数的接口中,需要使用 XML 注释来描述类和属性。以下是示例代码:
```csharp
/// <summary>
/// 用户类
/// </summary>
public class User
{
/// <summary>
/// 用户 ID
/// </summary>
/// <example>1</example>
public int Id { get; set; }
/// <summary>
/// 用户名
/// </summary>
/// <example>John</example>
public string Name { get; set; }
/// <summary>
/// 用户邮箱
/// </summary>
/// <example>john@example.com</example>
public string Email { get; set; }
}
/// <summary>
/// 更新用户信息请求类
/// </summary>
public class UpdateUserRequest
{
/// <summary>
/// 用户 ID
/// </summary>
/// <example>1</example>
public int UserId { get; set; }
/// <summary>
/// 用户名
/// </summary>
/// <example>John</example>
public string Name { get; set; }
/// <summary>
/// 用户邮箱
/// </summary>
/// <example>john@example.com</example>
public string Email { get; set; }
}
public class UserController : ApiController
{
/// <summary>
/// 更新用户信息
/// </summary>
/// <param name="request">更新用户信息请求</param>
/// <remarks>更新用户的姓名和邮箱</remarks>
public void UpdateUser(UpdateUserRequest request)
{
// 更新用户信息的逻辑
}
}
```
在 Swagger-UI 中,就可以看到类和属性的描述信息了。
阅读全文