【发布时间】:2018-03-29 19:30:39
【问题描述】:
这比将逗号分隔的查询参数字符串绑定到这些逗号标记值的数组要复杂一些。
基本上我有一个名为 User 的简单实体模型:
public class User
{
public string Name { get; set }
public int Age { get; set; }
// rest ommited
}
我希望能够在我的 web api 端点中提供多个名称和年龄,如下所示:
http://localhost/api/data/user/query?name=chris,john,alex&age=28,35
这将绑定到用户过滤器的数组(我只是使用实体模型)。 Swagger 还会显示测试输入表单,就好像它是您正在输入的单个用户字段一样。
如何使用 AspDotNetCore 2.0 Web Api 和 Swashbucke 完成此操作,而无需使用字符串创建新模型并在逗号上进行标记。我很想创建某种 Swashbuckle/AspNetCore 钩子(使用某些属性装饰方法参数),然后知道将输入拆分为单独的模型。
我生成过滤器表达式的想法是使用过滤器值的集合从存储库中过滤数据:
var exampleExpression = entity => (entity.Name.Contains("chris") || entity.Name.Contains("john") || entity.Name.Contains("alex")) && (entity.Age == 28 || entity.Age == 35);
我可以通过编程方式生成表达式树。
我什至想在生成过滤器表达式时将输入放入字典中进行查找。但我很想听听您的想法和解决方案。
【问题讨论】:
-
你应该考虑使用 POST,你会遇到 URL 最大长度的问题。 POST 可以接受很多参数,我们一直这样做。
标签: c# asp.net-core swagger asp.net-core-2.0 swashbuckle