在ASP.NET Web API项目中重用公共资源参数的类型和名称的最佳方法是什么?一些例子:
public HttpResponseMessage GetObjects(int rpp, int page, string q, string include)
{
...
}
可以实现为:
public HttpResponseMessage GetObjects([FromUri] CustomParameterModel)
{
...
}
public CustomParameterModel
{
// results per page
public int rpp { get; set; }
// current page
public int page { get; set; }
// search terms
public string q { get; set; }
// include defined properties
public string include { get; set; }
}
上述两种方法都会产生以下网址:对象?rpp = {rpp}& page = {page}& q = {q}& include = {include}
这适用于对象资源,但不适用于文件资源。文件资源不需要include参数。
public HttpResponseMessage GetFiles(int rpp, int page, string q)
{
...
}
如何在不重写参数类型和名称的情况下以优雅的方式实现这一目标?
答案 0 :(得分:1)
我认为你可以编写自己的模型绑定器(http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api)来为你服务。
另一种方法是编写消息处理程序,它可以预处理请求(http://www.asp.net/web-api/overview/working-with-http/http-message-handlers)并验证您的参数(分配默认值等)。
最后,如果你没有按要求标记字段(http://www.asp.net/web-api/overview/formats-and-model-binding/model-validation-in-aspnet-web-api),它们可能会保留默认值,对于你的int可能为0或int为null?和null为字符串。
总是关于特定情况,尝试不同的方法,找到最适合您需求的方法。