13 Haziran 2013 Perşembe

WEB API-Get İşlemi,Post İşlemi,Put İşlemi ve Delete İşlemi

2-WEB API-Get İşlemi,Post İşlemi,Put İşlemi ve Delete İşlemi
 Merhabalar,
Sizlere bilgim kadarı ile birşeyler aktarmaya çalışıyorum.Umarım bir nebze de olsa faydalı olması dileği ile konuya başlıyorum.
İçeriği kodların üzerindeki commentler ile yorumlamaya çalıştım.
1-Neden Web Api ? 

  • Artık uygulamalarda bir çok işlemler Client-Side'da yapılıyor.
  • Herhangi bir platforma bağlı değillerdir.
  • Herhangi bir programa diline bağlı değillerdir.
  • Esnekler ve genişletilebilirler.
  • Gönderilen ve Gelen veri boyutu düşük boyuttadır.
  • Hız performansı mükemmeldir.

  REST (REpresentational State Transfer)  = Client-Server iletişimini sağlayan bir mimaridir.Http Metotları  GET,POST,PUT ve DELETE ile bu iletişimi güvenli bir şekilde sağlamaktadır.

namespace PersonelKayit.Controllers
{
    public class PersonelsController : ApiController
    {

        private DataContextDb _db;
        public PersonelsController()
        {
            _db = new DataContextDb();
            _db.Configuration.ProxyCreationEnabled = false;
        }
        public IEnumerable Get()
        {
            //_db nesnemizin içerisindeki tüm personelleri getirir.
            return _db.Personels;
        }
        public Personel GetPersonel(int id)
        {
            //Gelen parametreye göre constructor'da set(atadık) ettiğimiz _db.Personels içerisindeki veriyi bulup personel nesnesine set(atadık) ettik.
            var personel = _db.Personels.FirstOrDefault(x => x.PersonelId == id);
            //Eğer personel nesnesi içerisinde verimiz yok ise, HttpStatusCode'un sayfa bulunamadı(404) hatasını yönlendirdik.
            if (personel ==null)
            {
                //
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
            }
            //personeli döndürüyoruz.
            return personel;
        }
        public HttpResponseMessage Put(int id, Personel personel)
        {
            //ModelState nesnesi, model içerisindeki tüm özelliklerin bilgilerini tutar. Bu özelliklerden bir tanesinde bile hata varsa 'ModelState.IsValid' 'false' döner.
            //Client'tan gelen id'ye sahip olan Personel varmı?'
            if (ModelState.IsValid && id==personel.PersonelId)
            {
                //EntityState içerisindeki personeli güncelleştir.
                _db.Entry(personel).State = EntityState.Modified;
                try
                {
                    //Kayıt et.
                    _db.SaveChanges();
                }
                //DataAdapter silme işlemini yaparken etkilenen satırı kontrol eder ve herhangi bir kayıt yok ise yani '0' dır.
                //Yani 0 ise HttpStatusCode'un sayfa bulunamadı(404) hatasını yönlendir.
                catch (DBConcurrencyException)
                {
                    //istek sunucuda bulunamadı.
                    return Request.CreateResponse(HttpStatusCode.NotFound);                    
                }
                //İşlemin başarılı bir şekilde gerçekleştirildiğini gösterir.
                return Request.CreateResponse(HttpStatusCode.OK, personel);
            }
            else
            {
                // 'BadRequest' İstek sunucu tarafından anlaşılamadı anlamını barındırır.
                return Request.CreateResponse(HttpStatusCode.BadRequest);    
            }
        }
        public HttpResponseMessage POST(Personel personel)
        {
            //ModelState nesnesi, model içerisindeki tüm özelliklerin bilgilerini tutar. Bu özelliklerden bir tanesinde bile hata varsa 'ModelState.IsValid' 'false' döner.
            if (ModelState.IsValid)
            {
                //constructor'da set(atadık) ettiğimiz _db.Personels içerisindeki Personel türündeki 'personel' nesnesini ekleme işlemini gerçekleştirdik.
                _db.Personels.Add(personel);
                //Kayıt işlemini gerçekleştirdik.
                _db.SaveChanges();

                //(201) http kodu.İşlem gerçekleşti,ama bir kaynak daha eklenecek.
                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, personel);
                //Response verisi olarak, eklediğini göstermek için eklenen personelin id'sini döndürerek GET metoduna istekte bulunmak için bu kaynağı ekliyor.
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new  { id = personel.PersonelId }));
                return response;
            }
            else
            {
                // 'BadRequest' İstek sunucu tarafından anlaşılamadı anlamını barındırır.
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public HttpResponseMessage DELETE(int Id)
        {
            //Delete metodunda gelen parametreye göre constructor'da set(atadık) ettiğimiz _db.Personels içerisindeki veriyi bulup personel nesnesine set(atadık) ettik.
            Personel personel = _db.Personels.Find(Id);
            //Eğer personel nesnesi içerisinde verimiz yok ise, HttpStatusCode'un sayfa bulunamadı(404) hatasını yönlendirdik.
            if (personel==null)
            {
                return Request.CreateResponse(HttpStatusCode.NotFound);
            }
            //constructor'da set(atadık) ettiğimiz _db.Personels içerisindeki Personel türündeki 'personel' nesnesini Remove ettik.
            _db.Personels.Remove(personel);

            try
            {
             //Kayıt etme işlemini gerçekleştirdik.
                _db.SaveChanges();
            }
            //DataAdapter silme işlemini yaparken etkilenen satırı kontrol eder ve herhangi bir kayıt yok ise yani '0' dır.
            //Yani 0 ise HttpStatusCode'un sayfa bulunamadı(404) hatasını yönlendir.
            catch (DBConcurrencyException)
            {
                return Request.CreateResponse(HttpStatusCode.NotFound);
            }
            //İşlemin başarılı bir şekilde gerçekleştirildiğini gösterir.
            return Request.CreateResponse(HttpStatusCode.OK, personel);
        }

    }
}
Share this post
  • Share to Facebook
  • Share to Twitter
  • Share to Google+
  • Share to Stumble Upon
  • Share to Evernote
  • Share to Blogger
  • Share to Email
  • Share to Yahoo Messenger
  • More...

0 yorum

:) :-) :)) =)) :( :-( :(( :d :-d @-) :p :o :>) (o) [-( :-? (p) :-s (m) 8-) :-t :-b b-( :-# =p~ :-$ (b) (f) x-) (k) (h) (c) cheer

 
© 2013 Saygınlık Bilgelikte Gizlidir
Designed by Blog Thiet Ke
Posts RSSComments RSS
Yukarı