Swagger UI 用点符号显示 asp.net webapi 参数名称
Swagger UI displaying the asp.net webapi parameter name with dot notation
我已经为我的 asp.net webapi 配置了 Swagger,它类似于下面显示的
[HttpGet]
[Route("search")]
public async Task<HttpResponseMessage> Get([FromUri]SearchCriteria searchCriteria)
当我看到 webapi 的 swagger 文档时,参数显示为
searchCriteria.sortField
searchCriteria.sortDirection
依此类推...作为 sortField,sortDirection 是 SearchCriteria
的属性
如何获取没有object.propertyname格式的参数名称?
谁能帮忙解决这个问题?
谢谢
我假设您正在使用 Swashbuckle。
查看 DocumentFilters
和 OperationFilters
。您可以扩展 Swashbuckle 以在文档或操作级别进行干预以修改输出。
通读 Swashbuckle documentation,实现这两个接口中的任何一个都相当简单。
这是我曾经用来从查询参数中删除 class 名称的 OperationFilter
。
public class ParameterFilter : IOperationFilter
{
private const string Pattern = @"^ # Match start of string
.*? # Lazily match any character, trying to stop when the next condition becomes true
\. # Match the dot";
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null)
{
return;
}
foreach (var parameter in operation.parameters
.Where(x => x.@in == "query" && x.name.Contains(".")))
{
parameter.name = Regex.Replace(
parameter.name,
Pattern,
string.Empty,
RegexOptions.IgnorePatternWhitespace);
}
}
}
像这样给你SwaggerConfig
添加:
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
// other settings omitted
c.OperationFilter<ParameterFilter>();
});
顺便说一句:正则表达式的灵感来自
当您将参数 Name = ""
传递给 FormUri
属性时,Swashbuckle 会生成非限定形式的参数名称,例如sortField
而不是 searchCriteria.sortField
.
public async Task<HttpResponseMessage> Get([FromUri(Name = "")]SearchCriteria searchCriteria)
我已经为我的 asp.net webapi 配置了 Swagger,它类似于下面显示的
[HttpGet]
[Route("search")]
public async Task<HttpResponseMessage> Get([FromUri]SearchCriteria searchCriteria)
当我看到 webapi 的 swagger 文档时,参数显示为
searchCriteria.sortField searchCriteria.sortDirection 依此类推...作为 sortField,sortDirection 是 SearchCriteria
的属性如何获取没有object.propertyname格式的参数名称?
谁能帮忙解决这个问题? 谢谢
我假设您正在使用 Swashbuckle。
查看 DocumentFilters
和 OperationFilters
。您可以扩展 Swashbuckle 以在文档或操作级别进行干预以修改输出。
通读 Swashbuckle documentation,实现这两个接口中的任何一个都相当简单。
这是我曾经用来从查询参数中删除 class 名称的 OperationFilter
。
public class ParameterFilter : IOperationFilter
{
private const string Pattern = @"^ # Match start of string
.*? # Lazily match any character, trying to stop when the next condition becomes true
\. # Match the dot";
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null)
{
return;
}
foreach (var parameter in operation.parameters
.Where(x => x.@in == "query" && x.name.Contains(".")))
{
parameter.name = Regex.Replace(
parameter.name,
Pattern,
string.Empty,
RegexOptions.IgnorePatternWhitespace);
}
}
}
像这样给你SwaggerConfig
添加:
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
// other settings omitted
c.OperationFilter<ParameterFilter>();
});
顺便说一句:正则表达式的灵感来自
当您将参数 Name = ""
传递给 FormUri
属性时,Swashbuckle 会生成非限定形式的参数名称,例如sortField
而不是 searchCriteria.sortField
.
public async Task<HttpResponseMessage> Get([FromUri(Name = "")]SearchCriteria searchCriteria)