扬鞭U I显示与点标记asp.net的WebAPI参数名称

问题描述 投票:2回答:3

我已经配置为扬鞭我的asp.net的WebAPI这是与下图类似一个

[HttpGet]
[Route("search")]
public async Task<HttpResponseMessage> Get([FromUri]SearchCriteria searchCriteria)

当我看到网上API招摇文件,该参数显示为

searchCriteria.sortField searchCriteria.sortDirection等等......作为的SortField,sortDirection是SearchCriteria的性质

enter image description here

如何获得无object.propertyname格式的参数名称?

谁能帮助如何解决这一问题?谢谢

c# asp.net-web-api2 swagger swagger-ui swashbuckle
3个回答
6
投票

这里是我曾经用来从查询参数删除类名称的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启发


0
投票

我假设你正在使用Swashbuckle。

看看DocumentFiltersOperationFilters。您可以扩展Swashbuckle在文档或操作层面进行干预,以修改输出。

通过Swashbuckle documentation阅读,这是相当直截了当地实现这两种接口。


0
投票

当你通过参数Name = ""FormUri属性Swashbuckle生成不合格形式例如参数名称sortField代替searchCriteria.sortField

public async Task<HttpResponseMessage> Get([FromUri(Name = "")]SearchCriteria searchCriteria)
© www.soinside.com 2019 - 2024. All rights reserved.