[英]How to setup Web API controller to route request to method parameter?
我有一个Web API设置,我想将字符串参数传递给GetAutomation方法。 在Global.asax中,我有:
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{testName}",
defaults: new { id = System.Web.Http.RouteParameter.Optional });
RouteTable.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/{controller}/{action}/{testName}");
}
在我的AutomationController.cs中,我有:
[ActionName("GetAutomation")]
[HttpGet]
public string StartAutomation(string testName)
{
//string testName = "MyTest123";
Vmware.StartAutomation("automation-server", testName);
return "Automation started for " + testName;
}
如果我从StartAutomation中删除testName参数并调用:
http://localhost/api/Automation/GetAutomation
有用。 如果我放回去尝试
http://localhost/api/Automation/GetAutomation/Test123
它失败并显示404错误。 知道我在做什么错吗? 谢谢,J。
Remove the {testName} from the "routeTemplate"
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{testName}",
defaults: new { id = System.Web.Http.RouteParameter.Optional });
RouteTable.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/{controller}/{action}");
}
并包含参数作为queryString
E:api / Automation / GetAutomation?testName = Test123
这是关于注释的问题,如果我正确理解的话,唯一要做的就是将函数上的参数输入声明为
[ActionName("RunMyStuff")]
public string MyMethodName(bool isAtomic, string blabla, int delayOfSec)
{
....Code Placed Here
}
因此,调用将与另一个调用类似,但是现在您拥有多个参数,因此您必须使用contact queryString参数。
E:api /自动化/ RunMyStuff?isAtomic = true&blabla = mystring&delayOfSec = 23
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.