Microsoft提供了一个很好的教程,可以让您的第一个ASP.NET Web API项目继续进行:
http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api
...但我不清楚 - 如何定义API URI和我的C#控制器方法之间的映射?
代表:
/api/products/{id}
解析为
public IHttpActionResult GetProduct(int id)
{
[...]
}
...但我不确定如何。 AUTOMAGIC?
我问,因为我想为这个URI创建一个新的映射:
/api/setReportNotificationsAsRead?uid={username}&items={itemIDs}
在我的控制器中使用这个新方法:
public IHttpActionResult SetReportNotificationsAsRead(string username, string itemIDs)
{
[...]
}
答案 0 :(得分:4)
...but im not sure how. automagic?
Automagic在于Web API中的HTTP Verbs。如果您为WebAPI发出GET请求,route / api / products / {id}可以映射到以GET开头的任何内容(或者只是方法名称Get)。
如果您发出POST请求,那么它将映射到任何POST方法(否则您使用路由前缀)。
这link可以帮助你理解魔法。这也可以帮助您了解如何配置要调用的SetReportNotificationsAsRead函数。
答案 1 :(得分:2)
你非常接近有一个有效的解决方案。您将方法参数名称混淆了:
public IHttpActionResult SetReportNotificationsAsRead(string uid, string items)
{
//Do your stuff!
}
HTTP GET参数的名称应与方法参数的名称匹配。这是ASP.NET MVC命名约定的一部分。
最后要注意的是,如果您实际上期望一组项目(即多个项目ID),您实际上可以节省一些工作并使用string[]
参数,只要您的HTTP参数正确发送即可。在这种情况下,您希望URI看起来像:/api/setReportNotificationsAsRead?items=123&items=456&items=789
。注意参数名称如何重复多次,但值不同。
有关路由系统的更多信息,我建议您转到ASP.NET MVC routing overview。