2013-01-15 8 views
11

Birçok tipi hiyerarşi veritabanına yuvalanmış bir biri şöyle olduğunu varsayalım:Özel Yönlendirme ASP.NET Web API ile

Bir Bölge birçok Ülkeler sahiptir; her bir Ülke birçok Şehir vardır; City, ülkesine ve bir adet ülkesine ait olmalıdır. Bir RDBMS bu bilgileri Abstracting

önemsiz bir çaba olmakla birlikte, (aklıma) en mantıklı DİNLENME bitiş noktası aşağıdaki gibi bir şey olurdu bir verilen bölge id için ülkelerin bir listesini döndürmek için:

HTTP GET http://localhost/Region/3/Countries 

Varsayılan olarak, .NET Web API'sının yönlendirmesi en iyi ihtimalle http://localhost/Countries/Region/3 veya http://localhost/Region/Countries/3 olacaktır.

Takip etmem gereken mantıklı bir adlandırma kuralı var mı, yoksa URI'ların hoşlandığım herhangi bir şekle girmesine izin verecek şekilde yönlendirilebilen yönlendirme var mı?

+0

Sanırım mevcut bir DBMS ile çalıştığımı ve veri deposuna ortak/özel API'ler oluşturmak istediğimi eklemeliyim. –

cevap

17

Yönlendirme, aradığınız URL'leri almak için yeterince özelleştirilebilir olmalıdır. Eğer formda URL'leri istiyorum varsayarsak 'http: // localhost/bölge/3/Ülkeler':

config.Routes.MapHttpRoute("MyRoute", "Region/{regionId}/Countries", new { controller = "Region", action = "GetCountries" }); 

Bu 'RegionController' açık 'GetCountries' eylem istekleri göndereceğini de, bu özel rota kayıt olabilir sınıf. URI'den sizin için otomatik olarak bağlanan modeli alan eylemde bir regionId parametresi olabilir.

WebAPI için özellik yönlendirme paketi için çevrimiçi görünmek isteyebilirsiniz çünkü durumunuzda daha uygun olabilir.

3

Rutin işler oldukça esnek olmalıdır - soru, nasıl sunulması gerektiği sorusudur. Aklında veya birden fazla kontrol cihazınız var mı?

routes.MapHttpRoute(
    name: "CountryList", 
    routeTemplate: "{controller}/{regionId}/countries" 
); 

Ve uygun bir yöntem:

public CountryCollection Get(int regionId) 

Yoksa sorunuzu şey eksik bir RegionController olsaydı Bir rota yapılandıramadı neden

görmüyorum ? Varsayılan yönlendirmeleriniz nereden geliyor?

http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web:

onların belgelerine bakın -api