0

これはStackOverflowの最初の投稿です。私はWebAPIが初めてです。ASP.Net WebAPIの1つのコントローラで複数のメソッドを使用する

ASP.NetにWebServiceが既に稼働しており、機能しています。当社は、WebサービスをASP.Net WebAPIに変換したいと考えています。私は複数のパラメータを取り、文字列またはブールまたは小数点を返す単純なクラスのいくつかのランダム関数を持っています。あなたは がここにいくつかの機能

1. public string GetPresidentName(DateTime OnTheDate,string CountryName) 
2. public DateTime GetReleaseDateOfMovie(string MovieName) 
3. public void AddNewCityNames(string[] CityNames) 

それらのすべては、WebサービスにWebMethod属性をされているクラス名は「GeneralKnowledge」であると言うことができるように、すべての15個の方法が相互に関係を持っていないことに注意してください。私はWebAPIを作成したいと思い、C#.Net WinForm appから呼び出すか、このAPIを他の人と共有して、より多くのデータを集めてより多くのデータを共有します。

主な質問は、それぞれのメソッドやアクション1つのコントローラの下。

誰かが1つのコントローラの下に複数のメソッドを作成している場合は、サンプルコードを共有できますか?

ありがとうございました Ishrar。

+2

あなたhavne'tは実際に質問をしました。あなたは新しいので、私はこのページを最初に読むことをお勧めしますhttps://stackoverflow.com/help/how-to-askまた、実際にはWEB APIの1つのコントローラに複数のメソッドを持つことができます。それらのそれぞれに対して個別の「コントローラ」を作成します。 –

答えて

0

コントローラには、必要な数のアクションを設定できます。 属性ルーティングを使用するだけです attribute-routing-in-web-api-2

1つのコントローラに15個のアクションを追加することはお勧めしません。いくつかのコントローラ(PresidentController、MovieController、RegionControllerなど)にそれらを集めることができます。あなたの行動がお互いに共通するものがなければ、多くの異なるコントローラを作成することができます。 1つのアクションを持つ15個のコントローラは、15個のアクションを持つ1つのコントローラを維持して読みやすくなります。 しかし、最良の選択肢は、それぞれにアクションが少ないコントローラをほとんど作成しないことです。

サンプルコントローラ:

[RoutePrefix("api/presidents")] 
public class PresidentsController : ApiController 
{ 
    [Route("GetFirstPresident/{countryName}")] 
    public IHttpActionResult GetFirstPresident(string countryName) 
    { 
     var president = string.Format("First president of {0} was XYZ", countryName); 
     return Ok(president); 
    } 

    [Route("GetPresident/{number}/{countryName}")] 
    public IHttpActionResult GetPresident(int number, string countryName) 
    { 
     var president = string.Format("{1} president of {0} was XYZ", countryName, number); 
     return Ok(president); 
    } 
} 

WebApiConfig.cs:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 
     // Configure Web API to use only bearer token authentication. 
     config.SuppressDefaultHostAuthentication(); 
     config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

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