如何在API属性路由中允许使用空参数?

时间:2019-02-28 12:06:14

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

我有一种根据3个条件进行搜索的方法:

  • 作者
  • 标题
  • 关键字

我为此搜索创建的API方法目前看起来像这样:

[Route("A={author};T={title};K={keywords}")]
[ResponseType(typeof(bool))]
public HttpResponseMessage Get(string author, string title, string keywords)
{            
    //Code for search
}

当所有3个参数都传递时,该方法可以很好地工作。但是,如果我只是输入一个作者而不是不是标题或关键字,则会收到一个Not Found错误。

是否有一种方法可以修改路由,以允许在1个或多个参数为空/空字符串时使用?

1 个答案:

答案 0 :(得分:0)

Route字符串中未提及的任何参数在作为URL查询字符串的一部分发送时将被映射。例如:

http://www.yourapi.com/path/to/endpoint?author=DouglasAdams&keywords=Hitchhiker

如果使用author = "DouglasAdams",则将使用title = nullkeywords = "Hitchhiker"Route("path/to/endpoint")调用您的方法。