我已经配置为扬鞭我的asp.net的WebAPI这是与下图类似一个
[HttpGet]
[Route("search")]
public async Task<HttpResponseMessage> Get([FromUri]SearchCriteria searchCriteria)
当我看到网上API招摇文件,该参数显示为
searchCriteria.sortField searchCriteria.sortDirection等等......作为的SortField,sortDirection是SearchCriteria的性质
如何获得无object.propertyname格式的参数名称?
谁能帮助如何解决这一问题?谢谢
这里是我曾经用来从查询参数删除类名称的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>();
});
BTW:正则表达式是由https://stackoverflow.com/a/7794128/502395启发
我假设你正在使用Swashbuckle。
看看DocumentFilters
和OperationFilters
。您可以扩展Swashbuckle在文档或操作层面进行干预,以修改输出。
通过Swashbuckle documentation阅读,这是相当直截了当地实现这两种接口。
当你通过参数Name = ""
到FormUri
属性Swashbuckle生成不合格形式例如参数名称sortField
代替searchCriteria.sortField
。
public async Task<HttpResponseMessage> Get([FromUri(Name = "")]SearchCriteria searchCriteria)