5

新しい .NET Web API を使用してレスト サービスをセットアップしていて、ちょっとした問題に遭遇しました。少し異なるルーティングが必要ですが、これを実現する方法がわかりません。

public class FormController : ApiController
{

    // api/form
    public string Get()
    {
        return "OK-Get";
    }
    // api/form/method1
    public string Method1()
    {
        return "OK1";
    }
    // api/form/method2
    public string Method2()
    {
        return "OK2";
    }
}

しかし、これはうまくいきません。に行くと/api/form/method2OK-Get応答が返ってきます。

これはルーティングに関係していると思いますが、MVC を使用したことがないのでわかりません。で次のように設定しようとしましたWebApiConfig.cs

config.Routes.MapHttpRoute(
    name: "FormApi",
    routeTemplate: "api/form/{action}"
);

しかし、それは何もしませんでした。

4

1 に答える 1

3

ルーティングはほぼ正しいですが、主な問題は、他のアクション メソッドで必要な HttpMethod 属性が欠落していることです。[HttpGet]その名前から、最初のメソッドで推論されます。これはあなたが必要とするものです:

public class FormController : ApiController
{
    // api/form
    public string Get()
    {
        return "OK-Get";
    }

    // api/form/method1
    [HttpGet]
    public string Method1()
    {
        return "OK1";
    }

    // api/form/method2
    [HttpGet]
    public string Method2()
    {
        return "OK2";
    }
}

App_Start/RouteConfig.cs に属するルート マップを使用

routes.MapHttpRoute(
    name: "FormApi",
    routeTemplate: "api/form/{action}",
    defaults: new { controller = "form", action = "Get"}
);

詳細については、http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selectionを参照してください。

于 2012-11-14T16:33:00.033 に答える