Asp.Net Web API Hakkında Sorum
-
Selamlar,
Web API öğrenmeye başladım. Çok garip bir problem yaşıyorum çıldırcam şimdi.
Aşağıdaki gibi 1 tane ApiController' ım var. İçerisinde 2 tane array döndüren metodum var. Ne yaptıysam sadece GetAll metodu çalışıyor. Diğer metodu çağıramıyorum.
[HttpGet] public List<Skill> GetAll() { return Skill.GetAll(); } [HttpGet] public Skill Get(byte skillId) { return Skill.FindById(skillId); }
WebApiConfig sınıfımda şu şekilde.
public static void Register(HttpConfiguration config) { // Web API configuration and services config.Formatters.Remove(config.Formatters.XmlFormatter); config.Formatters.Add(config.Formatters.JsonFormatter); // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
Aşağıdaki linkleri denediğimde debug koyuyorum hep GetAll metoduna düşüyor.
Örnek: /api/skill
/api/skill/getall
/api/skill/1
/api/skill/get/1 => bunda 404 not found hatası alıyorum.
Allah rızası için birisi yardım etsin, delircem :D
-
Birinci sorun yönlendirmede id adını kullanmışsın ancak metotta skillId.
Bunu id olarak değiştir.
İkinci sorun sanıyorum ki arzu ettiğin adresler /api/skill/getall ve /api/skill/get/123 gibi. Öyle ise WebApiConfig'deki routeTemplate'i aşağıdaki gibi değiştirmelisin.
routeTemplate: "api/{controller}/{action}/{id}"
-
Hocam ekstra olarak REST Api standartlarina bakmandada fayda var sonra sacma sapan web api/rest kullanimlari oluyor. Buda sana ekstra bilgi olur hakkiyla yazarsin api yi.
-
İlk önce cevaplar için teşekkürler.
@buzukatak, dostum söylediğin gibi deneyeceğim.
@TeRRoR, dostum araştıracağım, senin önerdiğin bir makale var ise okumak isterim.