【发布时间】:2018-06-19 11:56:26
【问题描述】:
我正在开发 WepApi2,我正在实现高级搜索功能。我现在有3个选项有10多个参数,还有一些分页参数。
1) 将对象作为参数传递,该参数将具有所有必需的过滤器。
2) 传递大约 10-12 个参数。
3) 方法1的扩展。我将一个对象转换为查询字符串,然后将查询字符串转换回对象。问题是我没有可以返回所有结果的默认 Get 方法。但是,我可以检查查询字符串是否为空并调用该方法。
我应该选择哪一个?在第一个中,我将不得不进行装箱和拆箱,因为 HttpClient Get 请求不支持 Body。
在第二个中,即使添加了一个参数,我也必须更改两到三个位置,因为我使用的是三层架构。
第一种方法的代码
public class GeneralSearchViewModel
{
public int RecordsPerPage { get; set; }
public bool CalculateTotal { get; set; }
public int CurrentPage { get; set; }
}
public class SomeAdvanceFilterClass : GeneralSearchViewModel
{
public Guid Dummy { get; set; }
public string DummyProperty2 { get; set; }
public string DummyProperty3 { get; set; }
public string DummyProperty4 { get; set; }
public string DummyProperty5 { get; set; }
public string DummyProperty6 { get; set; }
}
public class DummyController : ApiController
{
public SearchResultModel<DummyModel> Get(SomeAdvanceFilterClass filter)
{
Logic logic = new Logic();
return logic.GetResult(filters);
}
}
不知道如何调用它,因为 HttpClient 不支持带正文参数的 Get Request。即使由于缓存问题和其他一些问题,它也不推荐。
第二种方法
public class DummyController : ApiController
{
public SearchResultModel<DummyModel> Get(int RecordsPerPage,bool CalculateTotal,int CurrentPage,Guid Dummy,string DummyProperty2....)
{
Logic logic = new Logic();
return logic.GetResult(RecordsPerPage,CalculateTotal,CurrentPage,Dummy...);
}
}
这需要对路由配置进行一些更改,否则我需要使用默认参数。此外,一个参数的变化需要所有层的变化
所有方法似乎都有一些大问题。有什么好的推荐。我没有使用.NETCORE,所以不能对正文使用 Get 请求。
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api2