2016-06-24 2 views
0

をMVCのAPIを拡張し、私はこの記事からの助けを借りて、私の既存のMVCプロジェクトにAspNet.WebAPIを追加しました:は、すべてのコントローラに

How to add Web API to an existing ASP.NET MVC (5) Web Application project?

をそれは基本的に以下のコントローラを追加します。

public class APIController : ApiController 
{ 
    // GET api/<controller> 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 
... 

そして、これは、App_Startで:

namespace WebApplication1 
{ 
public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // TODO: Add any additional configuration code. 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

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

     // WebAPI when dealing with JSON & JavaScript! 
     // Setup json serialization to serialize classes to camel (std. Json format) 
     var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter; 
     formatter.SerializerSettings.ContractResolver = 
      new  Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(); 

     } 
    } 
} 

これは動作しますが、 r mysite/api/API これを拡張して既存のコントローラ(mysite/api/CLIENTなど)の残りの部分と連携させるにはどうすればよいですか?

コードを見ると、うまくいくはずです。私は他のコントローラに "Get"機能を入れてみましたが、運はありませんでした。実際に私はなぜ/ APIが動作するのかわかりません - それはコントローラのファイル名を読み込んでいますか?

基本的には、次に行くべき場所についてのアドバイスを探しています。それぞれのコントローラにコードを入れたり、既存の「APIController」に多くの呼び出しを入れたりしません。

答えて

0

追加されたコントローラは、WebAPIコントローラの単なる例です。あなたはもっと追加することができます。たとえば、次のようになります。

public class ClientsController : ApiController 
{ 
    public IEnumerable<Client> Get() 
    { 
     // return a collection of clients 
    } 

    // etc. 
} 

これらは異なる基底クラスから継承されるため、MVCコントローラとAPIコントローラを別々に保つ必要があります。 APIメソッド用のAPIコントローラを追加するだけです。

関連する問題