重用ASP.NET Web API项目中的公共资源参数

时间:2014-03-30 15:14:51

标签: c# asp.net-web-api

在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)
{
    ...
}

如何在不重写参数类型和名称的情况下以优雅的方式实现这一目标?

1 个答案:

答案 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为字符串。

总是关于特定情况,尝试不同的方法,找到最适合您需求的方法。