2012-05-11 20 views
1

私は2つのテーブルを持つデータベースを持っています。各都市が特定の国との関係を持つ国と都市。MVC Web API、サブ項目を取得

私のASP.Net Web APIでは、CountriesControllerを実行するために、http://example.com/api/countriesへのGETリクエストによって国のリストを取得できます。そして、私は国についての詳細をhttp://example.com/api/countries/1で得ることができます。

国のすべての都市のリストが必要な場合は、RESTクエリのURLはhttp://example.com/api/countries/1/citiesである必要がありますか?そして都市の詳細http://example.com/api/countries/1/cities/1

これをASP.Net Web APIでどのように達成できますか?

答えて

2

どのようにこのことについて、global.asax.csにそうような追加のAPIのルートを定義します。


routes.MapHttpRoute(
    name: "CityDetail", 
    routeTemplate: "api/countries/{countryid}/cities/{cityid}", 
    defaults: new { controller = "Cities" } 
); 

そして、そのような新しいCitiesController定義:あなたが望むかもしれない言うこと


public class CitiesController : ApiController 
{ 
    // GET /api/values 
    public IEnumerable Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 

    // GET /api/values/5 
    public string Get(int countryId, int cityid) 
    { 
     return "value"; 
    } 

    // POST /api/values 
    public void Post(string value) 
    { 
    } 

    // PUT /api/values/5 
    public void Put(int countryId, int cityid, string value) 
    { 
    } 

    // DELETE /api/values/5 
    public void Delete(int countryId, int cityid) 
    { 
    } 
} 

言うまでもなくをコントローラの実装を少し改善する:)

+0

ありがとうございました!私が実装しなければならなかった特定の国の都市のコレクションを返すようにhttp://example.com/countries/1/citiesを取得するには : // GET/API/ 公共のIEnumerableのGet(int型countryId)の値 {新しい文字列を返す[] {"値1"、 "値2"}; } –

関連する問題