C#-Asp.Net Web API路由-必需的QueryString参数
作者:互联网
如何在Asp.Net Web API中要求某些路由的查询字符串?
控制器:
public class AppleController : ApiController
{
public string Get() { return "hello"; }
public string GetString(string x) { return "hello " + x; }
}
public class BananaController : ApiController
{
public string Get() { return "goodbye"; }
public string GetInt(int y) { return "goodbye number " + y; }
}
所需路线:
/apple --> AppleController --> Get()
/apple?x=foo --> AppleController --> Get(x)
/banana --> BananaController --> Get()
/banana?y=123 --> BananaController --> Get(y)
解决方法:
只是做这样的事情:
public string Get(int y = -1)
{
if(y < 0) return "goodbye";
return "goodbye number " + y;
}
这样,它是一条路线,并且涵盖所有情况.为了清楚起见,您也可以将每种方法都视为私有方法.
另一种方法是添加更多路由,但是由于这些路由有些特定,因此您必须添加额外的路由.为简单起见,我会说您将方法GetString和GetInt更改为同一件事(例如GetFromId,以便可以重用路由:
routes.MapRoute(
name: "GetFromIdRoutes",
url: "{controller}/{id}",
defaults: new { action = "GetFromId" }
);
routes.MapRoute(
name: "GetRoutes",
url: "{controller}",
defaults: new { action = "Get" }
);
如果您对这些内容的理解不够普遍,则可能会遇到很多路由条目.另一个想法是将它们放到区域中以避免路线冲突.
标签:asp-net-web-api,asp-net,c,routing 来源: https://codeday.me/bug/20191127/2075841.html