0

コントローラーで標準の CRUD 操作を行いたいとします。

api/values - IEnumerable Get() api/values/1 - Get(int id) api/values - Post([FromBody]string value) api/values/5 - Put(int id, [FromBody]string value) api/値/5 - 削除 (int id)

しかし、次のような追加の操作が必要です。

api/values/someoperation1 api/values/searchbysomething ... など。

この下に 2 番目のルートがあっても役に立ちません

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

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}"
        );
4

1 に答える 1

0

デフォルトでは、REST スタイルのルーティングと RPC スタイルのルーティングを 1 つのコントローラーに混在させることはできません。

ASP.NET Web Stack の Codeplex - http://aspnetwebstack.codeplex.com/workitem/184には未解決の問題があります。

唯一の合理的な解決策は、リソースごとに 2 つのコントローラーを用意することです。1 つは CRUD 用に、もう 1 つは非 CRUD (RPC) タイプの操作用です。

于 2012-10-02T22:08:06.923 に答える