WebAPI路由到具有多个可选参数的函数

本文关键字:参数 函数 路由 WebAPI | 更新日期: 2023-09-27 18:25:43

我在WebAPI控制器中有以下函数头声明为路由:

[Route("page/{page}/{cityfilter?}/{statefilter?}/{organizationfilter?}")]
public IEnumerable<Contact> GetContact(int page, string cityfilter = null, string statefilter = null, string organizationfilter = null)
{
     ...
}

这里的问题是,我希望每个参数都是可选的,所以我想发出一个具有城市过滤器、状态过滤器、组织过滤器、其中两个或三个的请求,然后由该函数处理和路由,但我不知道如何构建URI,例如,该路由只适用于状态过滤器。

我如何在WebAPI中做到这一点?例如,我应该如何从Jquery Ajax调用中调用资源地址?

谢谢。

WebAPI路由到具有多个可选参数的函数

由于参数是简单类型(字符串),因此可以从路由数据(URL路径)或查询字符串绑定它们。因此,您可以将可选参数移动到查询字符串中,并使您的路由仅与page参数匹配。

[Route("page/{page}")]

以下是一个URL示例,您可以使用它从浏览器或AJAX调用调用此操作:

www.yourapidomain.com/page/1?cityfilter=aCityFilterString&statefilter=aStateFilterString&organizationfilter=anOrganizationFilter

当然,您可以省略任何可选参数或更改它们的顺序。

在您的示例中,操作方法签名可以保持原样。

有关详细信息,您可以查看参数绑定ASP.NET Web API。