2

api/{controller}/{action}/{id} のような API コントローラーのカスタム アクションが必要です

これは私の設定です

config.Routes.MapHttpRoute(
    name: "DefaultMethodApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

config.Routes.MapHttpRoute(
    name: "ApiByAction",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { action = "Browse", id = RouteParameter.Optional }
);

これはデフォルトルート /api/dropzone/1 にヒットしますが、「ApiByAction」構成で /api/dropzone/browse/1 にヒットしようとしましたが、うまくいきません。

4

1 に答える 1

6

ルート定義の順序は重要です。宣言した順序と同じ順序で評価されるため、必ず順守してください。

config.Routes.MapHttpRoute(
    name: "ApiByAction",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional },
    constraints: new { action = @"^(?!\d)[a-z0-9]+$" }
);

config.Routes.MapHttpRoute(
    name: "DefaultMethodApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

{action}また、最初のルート定義でトークンの制約を指定する必要がある場合があることにも注意してください。

于 2013-02-16T18:14:49.670 に答える