【发布时间】:2012-08-05 10:02:40
【问题描述】:
我需要实现以下 WebAPI 方法:
/api/books?author=XXX&title=XXX&isbn=XXX&somethingelse=XXX&date=XXX
所有查询字符串参数都可以为空。也就是说,调用者可以指定从 0 到全部 5 个参数。
在 MVC4 测试版中,我曾经做过以下事情:
public class BooksController : ApiController
{
// GET /api/books?author=tolk&title=lord&isbn=91&somethingelse=ABC&date=1970-01-01
public string GetFindBooks(string author, string title, string isbn, string somethingelse, DateTime? date)
{
// ...
}
}
MVC4 RC 不再像这样了。如果我指定的参数少于 5 个,它会回复 404 说:
在控制器“Books”上找不到与请求匹配的操作。
什么是正确的方法签名,使其表现得像以前一样,而不必在 URL 路由中指定可选参数?
【问题讨论】:
-
让 [httpget] 行动起来。
-
如果我设置了所有参数,方法就会被调用;此外,它以
Get开头,因此它会自动与HTTP GET方法绑定... -
这就是 web api 路由的工作原理,asp.net/web-api/overview/web-api-routing-and-actions/…
-
是的。我知道它是如何工作的。在这种特殊情况下,我无法让它工作。
-
这是怎么编译的?
string?不是有效类型。您不能将string声明为可空类型,因为它是引用类型。
标签: c# url asp.net-web-api query-string