ASP.Net Wep Api Projesi Oluşturma
Merhabalar , Bu yazımda Visual Studio 2017 Pro. ile bir Wep Api projesi nasıl oluşturulur bu işlemleri adım adım yapacağız.
ayrıca projemizdeki oluşan dosyaları inceleyeceğiz.
aynı işlemleri 2015 ve daha üst sürümlerde de yapabilirsiniz.
Kullandığım Visual Studio sürümü bilgileri ekran görüntüsündeki gibidir :
File –> New –> Project i seçip veya Ctrl+Shift + N kısa yolu ile proje oluşturma ekranı açılır.
C# Bölümünden Web i seçip ASP.Net Web Application u seçiyoruz.
Açılan Ekranda Wep API Seçeneğini seçiyoruz , referans olarak kendisi default olarak MVC ve Web API Seçeneklerini eklemektedir , seçimler kaldırılamıyor.
Seçimlerimizi yaptıktan sonra projemiz oluştu sağ kısımda bulunan solition explorer kısmından incelersek MVC uygulamalarına benzer yapıda bir yapının olduğu görülecektir , Bu kısımda Controller kısmını incelersek default ta 3 tane Controller dosyası olduğu görülür , Account,Home,Values
HomeController incelediğimizde MVC deki gibi Controller sınıfından miras aldığını.
// public class HomeController : Controller //
WebApi Controllerları ise ApiController sınfından miras oları , Bu şekilde Controller ları ayırt edebilirsiniz.
// public class ValuesController : ApiController //
Ayrıca Projemizde oluşan Global.asax dosyasmız projemizin yaşam döngüsü sırasında yapılan işlemlerin belirlendiği dosyamız bu dosyayı incelediğimizde.
// public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } //
Burada Application_Start() yani proje ilk başlatıldığında çalışacak olan kodlar bulunmakta , çeşitli ayarlar bulunmakta filter,area,route,bundels v.s.
Configurasyon ayarlarını incellersek.
GlobalConfiguration.Configure(WebApiConfig.Register);
Bu dosyanın tolu App_Start klasörü altında WebApiConfig.cs dosyasıdır.
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 } ); } }
Default route ayarı kısmını incelersek bir methodun nasıl çağırılacağı ile alakalı bilgi burada bulunmaktadır.
api/Controller adı/varsa id –> id için Optional tanımlanmış yani isteğe bağlı olarak gerekirse boş geçilebilir demek.
Örnek Olarak ValuesController Controllerını içindeki bir get methodunu (Action’ını) çağırmak istediğimizde url e yazmamız gereken bilgiler nasıl olmalıdır :
public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string Get(int id) { return "value"; } }
Örn : domainadı/api/Values şeklinde olmalıdır , dikkat ederseniz ayarlarımızda sadece controller/ varsa id şeklinde idi default olarak , fakat values controllerımızda get post put olarak birden fazla method action bulunmakta , wep api projelerinde get,post ,put,delete gibi işlemler api yi çağırıken kullanılan method üzerinden anlaşılmaktadır. yani tarayıcıda url i direk çağırdığımızda bu default olarak get işlemi olduğu anlamına gelmektedir .
Örneğin Postman gibi bir test aracı kullanırsak isteklerde seçeceğimiz method a göre otomatik olarak wep api bu default methodları tanıyacaktır .
Örneğin Values methodumuzda
Get mişlemi için api/values yazmamız yeterlidir , herhangi bir id göndermek gerekirse api/values/5 şeklinde kullanmamız get işlemi için yeterlidir.
Örnek projemi çalıştırdığımda : http://localhost:51600/api/Values/ olarak istek (request) attığımda
sonuç :
<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <string>value1</string> <string>value2</string> </ArrayOfstring>
olarak cevap (response) dönmektedir.
controllerdaki actionlarımız da belirterek çağırmak istersek WepApiConfig.cs dosyasındaki routetemplate kısmını :
// routeTemplate: "api/{controller}/{action}/{id}" //
şeklinde action alanınıda ekleyebiliriz.
bu değişiklikten sonra get action ımızı çağırmak istediğimizde artık url imize yazmamız gerekecek.
Örn: domain /api/Values/get
Artık birden falza get methodu ekleyebilirim , Get methodlu getSiteLink isiminde bir action ekledim return olarak bir string geri dönmekte.
// [HttpGet] public string getSiteLink() { return "www.salihseker.com"; } //
Projemi derleyip tekrar çalıştırdığımda :
http://localhost:51600/api/Values/getSiteLink
şeklinde istek gönderdiğimde sonuç :
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">www.salihseker.com</string>
şeklinde dönmektedir.
Örnek bir api kullanmak test etmek için geliştirilmiş fake dataların bulunduğu yardımcı bir site alan :
https://jsonplaceholder.typicode.com/ sitesini inceleyebilir ve kullanabilirsiniz.
Bu yazımızda wep api projesi ve içeriğinden kısaca bahsettik dikkat edilmesi gereken ayrıntılardan bahsettik , umarım faydalı olmuştur.