簡體   English   中英

如何設置Web API控制器以將請求路由到方法參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM