ASP.NET Web API 中带有可选参数的属性路由

Posted

技术标签:

【中文标题】ASP.NET Web API 中带有可选参数的属性路由【英文标题】:Attribute routing with optional parameters in ASP.NET Web API 【发布时间】:2014-04-18 18:25:13 【问题描述】:

我正在尝试使用 Web API 2 属性路由来设置自定义 API。我已经让我的路由正常工作,以便调用我的函数,但由于某种原因,我需要传入我的第一个参数以使一切正常工作。以下是我要支持的网址:

http://mysite/api/servicename/parameter1
http://mysite/api/servicename/parameter1?parameter2=value2
http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3
http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3&p4=v4

最后 3 个 URL 有效,但第一个 URL 显示“未在与请求匹配的控制器‘控制器名称’上找到任何操作。”

我的控制器如下所示:

public class MyServiceController : ApiController

    [Route("api/servicename/parameter1")]
    [HttpGet]
    public async Task<ReturnType> Get(string parameter1, DateTime? parameter2, string parameter3 = "", string p4 = "")
    
        // process
    

【问题讨论】:

【参考方案1】:

Web API 需要显式设置可选值,即使是可为空的类型...所以您可以尝试设置以下内容,您应该会看到您的第一个请求成功

DateTime? parameter2 = null

【讨论】:

您的 RouteAttribute 最终看起来像什么以支持可选参数(或者如果您的路由与原始帖子一样,请求 URL 看起来像什么)?

以上是关于ASP.NET Web API 中带有可选参数的属性路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5中带有可选参数的url中的两个斜杠

ASP.NET Web API 中的可选查询字符串参数

Swift中带有可选完成块的函数[重复]

ASP.NET Web API 2 中带有 AuthorizationFilterAttributes 的条件 OR

Visual Studio 中带有 ASP.NET Web API 项目的 Angular 项目

在 xib 中带有可选 UIImageView 的自定义 UITableViewCell