22 Ekim 2017 Pazar

AngularJS Framework Örnekleri - Yeni Başlayanlar için...

Merhaba arkadaşlar bu yazıda AngularJS yeni başlayan için basit ve aynı zamanda AngularJS temelini öğretecek 8 örnek hazırlayıp yayınladım. Örnekler tek html sayfasının içerisindedir. Controller scriptlerini de < script > tagı ile aynı sayfanın içine koydum. Dilerseniz sayfayı buradan indirebilirsiniz.
AngularJS JavaScript ile hazırlanmış bir client-side frameworktür. Mobile web siteleri hazırlamak için kullanabilir. Kullanıcıların istek ve cevapları hızlı sonuçlanır. Route sayesisinde sayfa geçişlerinde sürekli server ile iletişime geçmeye gerek yoktur. RESTful web servis ile çalışmak çok kolaydır.

1. AgullarJS çalıştı mı?

AngularJS uygulamaları HTML tagı içerisinde ng-app direktifi ile başlar. ng-app Direktifinin bulunduğu HTML tagın < /.. > kapatılması ile sonlanır.
AngularJS bağlantısı yapılmışsa ve çalışıyorsa { { 4+3 } } ifadesinin çıktısı 7 olacaktır.

   // Module tanımlanması.
   var app=angular.module("app",[]);
  
Çıktı:{{ 4+3 }}

2. Direktifler 1 - ng-model ve ng-bind

Bu örnekte ng-model="name" direktifi olan text içinde yazılan değeri ng-bind="name" direktifi olan span tagı içerisinde göstermektedir.
İsminizi Giriniz:
Merhaba

3. Direktifler 2 - ng-repeat ve ng-init

ng-repeat direktifi foreach mantığıya çalışır. Listelenen kayıt sayısı kadar tag tekrarlanır. Veriler ng-init direktifi içinde json formata yazılmıştır.
Şehir Tablosu
  • Şehir: {{ item.city }} Plaka Kodu: {{ item.plate }}

4. İfadeler

İfadeler { { ifadeler } } içiçe iki süslü parantez içinde yazılır.
Merhaba {{student.firstname + " " + student.lastname}}!
Kitabın Fiyatı : {{cost * quantity}} TL
Öğrenci No: {{student.rollno}}
Puan(Mat): {{marks[3]}}

5. Controller

MVC Direktif: ng-controller
AngularJS uygulamarının temelinde Controller vardır. Uygulamanın içindeki verilerin akışını Controller kontroler eder. ng-controller direktifi ile tanımlanır. Controller içinde özellikleri ve fonksiyonları barındıran JavaScript nesnesidir. Her Controller'ün bir $scope parametresi vardır.

  // FirstController
  app.controller('FirstController',['$scope', function FirstController($scope) {
   $scope.message="{ { message } } İlk Controller";
  }])
  
{{ message }}

6. Controller devam...

Örnek: Öğrenci Listesi

  // Student Controller
  app.controller('StudentController',['$scope', function StudentController($scope) {
   $scope.students=[
    {
     name:"Berken",
     no:101,
     lessons:['math:70','history:87']
    },
    {
     name:"Neslihan",
     no:102,
     lessons:['lineer:67','math:50','datastructer:47']  
    }
   ];
  }])
  
Öğrenci Numarası Dersler
{{ student.name }} {{ student.no }}
  • {{ lesson }}

7. Controller devam...

Örnek: Controller içinde metot tanımlanması
Aynı zamada ng-model ve ng-click direktiflerinin nasıl kullanıldığını gösteren bir örnek.

  // Cutomer Controller
  app.controller('CustomerController', ['$scope',
   function CustomerControler($scope) {
    $scope.customer={};
    $scope.customer.name = "Resul GÜNEŞ";
    $scope.customer.number = 44522;
    // scopa metot ekleme
    $scope.changeCustomer = function(){
    $scope.customer.name = $scope.cName;
    $scope.customer.number = $scope.cNumber;
   };
  }]);
  
Müşteri Adı: {{ customer.name }} Numara: {{ customer.number }}
Müşteri Adı:
Numarası:

8. Controller devam...

Örnek: Form Submit
ng-submit direktifinin nasıl kullanıldığını gösteren bir örnek.

  // AddCustomer Controller
  app.controller('AddCustomerController',['$scope','$location',
   function AddCustomerController($scope,$location){
    $scope.submit=function(){
     $location.path('/AddCustomer/'+$scope.cName+'/'+$scope.cNumber);
    };
  }]);
  
Müşteri Adı:
Numarası:

18 Ekim 2017 Çarşamba

Laravel Framework ile RESTful Web Servis Oluşturma ve C# ile RESTful Web Servisten Veri Çekme

Merhaba arkadaşlar bu yazımda; kullanıcıların yazılımlarımızın güncelliğini kontrol edebilmeleri için İnternet sitemizde çalışan bir Restful web service hazırladım ve yazılımda web service i çağırarak yazılım güncelliğini kontrol ettirdim.

Arkadaşlar Rest mimarisine fazla girmeyeceğim. Veri iletişimini HTTP protokolü ile yapar. HTTP metotlarını kullanır. Veri almak için GET, veri eklemek için POST, veri güncellemek için PUT ve veri silmek için DELETE  HTTP'nin metodunu kullanır. Yani requset ve response mantığına dayanır. Rest response(İstek cevabı) xml, json veya text   formatlarında olabilir. JSON formatının parse edilmesinin kolay olması ve veri boyutunun hafif olması nedeniyle bu uygulamada JSON formatı kullanılmıştır. JSON format web servislere yaygın olarak kullanılmaktadır.
Web servisi, uygulamalar veya sistemler arasında veri alışverişinde kullanılan açık protokol ve standartlara denir. Rest mimarisini kullanan servislere Restful service denilmektedir.

Restful servis oluştururken; veri çekme, veri ekleme, veri güncelleme ve veri silme metotları(GET, POST, PUT, DELETE) için bir yönlendirmeyle (route)  ve response üretecek bir fonksiyonun yazılmasıyla gerçekleşir. Arkadaşlar bu uygulamada sadece HTTP GET metodu kullanılmıştır. Diğer metotları get metodunu anladıktan sonra kolaylıkla oluşturabilirsiniz.

LARAVEL FRAMEWORK RESTful SERVİS OLUŞTURMA

1. Route Oluşturma: Rotanıza resource metodunu yazarsanız Laravel sizler için get, post, put ve delete rotları oluşturur. Yazılım güncelleme kontrolüm (MVC deki C) bir namespace içinde olduğu için ve belki ilerde başka fonksiyon ve web servisler yazarım diye aşağıda görüldüğü gibi rotayı Route grubu içine koydum.

 // Web Sevices Routes  
 Route::group(['prefix'=>'webservices','namespace'=>'webservices'],function()  
 {  
      Route::resource('softwareupdate', 'SoftwareUpdateController');  
 });  


Url'nin sonunda softwareupdate yazdığımızda bütün kayıtlar, softwareupdate/{id} yazdığımızda ise id yerine yazdığımız değer ile eşleşen kayıt döndürülecektir.

2. Controller Oluşturma: Laravel frameworkte controller oluşturmak için çalıştırdan cmd komutu ile  ms-dos konsolunu açın ve resindeki komutları uygulayın. Ben kontrolü webservices dizini altında oluşturdum sizler istediğiniz yerde oluşturabilirsiniz. Laravel framework kullanıyorsanız muhtemelen composer bilgisayarınıza kurmuşsunuzdur.



SoftwareUpdateCotroller kontrolün kodlarına gelince açıklamalarıyla birlikte aşağıdadır.

 // $softwares yazılımlarımızın dizisi  
      private $softwares;  
      public function __construct()  
      {  
           // Yazılımlarımızın dizisi oluştur  
        $this->softwares=[  
             'software'=>[  
                     [  
                       'id'=>'tiventisay',  
                       'description'=>'Tiventi Site ve Apartman Yonetimi',  
                       'version'=>'0.0.0.2',  
                       'update'=>'2017-10-16',  
                       'download'=>'http://www.tiventi.com/software/download/tiventi-site-ve-apartman-yonetimi'  
                     ],  
                  [  
                       'id'=>'tiventist',  
                       'description'=>'Tiventi Sinav Takibi',  
                       'version'=>'0.0.0.2',  
                       'update'=>'2017-10-16',  
                       'download'=>'http://www.tiventi.com/software/download/tiventi-sinav-takibi'  
                  ],  
                  [  
                       'id'=>'tiventites',  
                       'description'=>'Tiventi Teknik Servis',  
                       'version'=>'1.0.0.2',  
                       'update'=>'2017-10-16',  
                       'download'=>'http://www.tiventi.com/software/download/tiventi-teknik-servis'  
                  ]  
             ],  
             'error'=>'Bilgiler okunmadi!'  
        ];  
      }  
   // Bütün yazılımların listesi  
   public function index()  
   {  
        // Listeyi json formatta döndür.  
        return response()->json($this->softwares);  
   }  
   // Belirli bir yazılımın bilgisini alma  
   public function show($id)  
   {  
        $software;  
        // Dizide yazılımın bulunması  
        foreach ($this->softwares['software'] as $key => $value)   
        {  
             if($id==$value['id'])  
             {  
                  $software=$value;  
                  break;  
             }  
        }  
        // Bulunan yazılımı json formatta döndür.  
        return response()->json($software);  
   }  

 Aşağıdaki resimlerde de girdiğimiz url ye göre aldığımız JSON format response leri göreceksiniz.





Arkadaşlar iki adımda RESTful web servisini oluşturduk. Şimdi bu web servisini C# tarafından çağırıp bilgilerini okumaya geldi. Tahmin edeceğiniz gibi C# tarafında bir url ile yukarıdaki resimlerdeki JSON formatında veri ürettikten sonra JSON veriyi parse edip veriyi kullanmak kalıyor.

C# İLE RESTful Web Service Çağırmak

1. Windows Form Uygulaması Projesini Oluşturmak: Uygulamamız CheckSoftwareUpdate adında Windows Form Uygulaması olarak oluşturuldu. MainForm adında uygulama çalıştığında ilk gösterilecek form oluşturuldu. Daha sonra verinin Model sınıfının olduğu Software.cs adında bir dosya oluşturuldu. Son olarak JSON formatındaki verileri parse etmemizi sağlayan ve hızlandıran JSON.NET kütüphanesini referanslara ekledik. Kendinizde JSON verisini parse edebilirsiniz ama çok zahmetli bir iş ve verileriniz karmaşıklaştıkça içinden çıkmazsınız. C# tarafındaki dizin resmi aşağıdaki gibidir.


2. Veri Modelimiz: Bu modelin oluşturulması get yapılan verinin tutarlılığı ve diğer HTTP metotları için veri modeli avantaj sağlayacaktır. Model kodu aşağıdadır.



 using System;  
 using System.Collections.Generic;  
 namespace CheckSoftwareUpdate  
 {  
   public class Software  
   {  
     public string Id { get; set; }  
     public string description { get; set; }  
     public string version { get; set; }  
     public string update { get; set; }  
     public string download { get; set; }  
   }  
   public class Softwares  
   {  
     public List<Software> software { get; set; }  
     public string error { get; set; }  
   }  
 }  

3. Verinin Alınması ve Diğer İşlemler: C# RESTful web servis çağırmak daha doğrusu HTTP metotlarını işlemek için bir çok yöntem vardır. Hazır kütüphanelerde mevcut. Restsharp gibi. Ama .Net içinde olan HttpClient bu uygulama için yeterli ve hızlıdır. Kod ile birlikle açıklamalar mevcuttur. Son olarak form resmi eklenmiştir.

 using System.Windows.Forms;  
 using Newtonsoft.Json;  
 using System.Net.Http;  
 using System.Net.Http.Headers;  
 namespace CheckSoftwareUpdate  
 {  
   public partial class MainForm : Form  
   {  
     // Kurulu yazılımın sürüm bilgilerinin tutulacağı nesne; Gerçekte bu bilgi bir config dosyayından veya veritabanından alınmalıdır.  
     Software swk =new Software();  
     // Güncel yazılımın sürüm bilgilerinin tutulacağı nesne  
     Software sw;  
     // Bütün yazılımların tutulacağı nesne  
     Softwares sws;  
     public MainForm()  
     {  
       swk.Id = "tiventist";  
       swk.description = "Tiventi Sınav Takibi";  
       swk.version = "0.0.0.1";  
       swk.update = "2017-09-12";  
       InitializeComponent();  
     }  
     private void MainForm_Load(object sender, EventArgs e)  
     {  
       // Temel url  
       string url = "http://localhost/tiventi/public/webservices/softwareupdate";  
       // GET fonksiyonu bir yazılımın bilgilerini alacağı için id="tiventist" veya swk.id  
       string id = "tiventist";  
       // GET fonksiyonu sadece bir yazılımın bilgisini döndereceği için JSON dönüşümünü Software nesnesine atandı.  
       sw = JsonConvert.DeserializeObject<Software>(GET(url, id));  
       // Bilgilerin formda gösterilmesi  
       // Güncel yazılımın bilgileri  
       lbName.Text += sw.Id;  
       lbDescription.Text += sw.description;  
       lbVersion.Text += sw.version;  
       lbUpdate.Text += sw.update;  
       linkDownload.Text = sw.download;  
       // Kurulu yazılım bilgileri   
       lbDescription2.Text += swk.description;  
       lbVersion2.Text += swk.version;  
       lbUpdate2.Text += swk.update;  
       // Kurulu ve Güncel sürüm aynı mı?  
       if (swk.version == sw.update)  
       {  
         btnUpdate.Enabled = false;  
         lbStatus.Text = "Yazılım güncel.";  
       }  
       else  
       {  
         lbStatus.Text = "Yazılım güncel değil!";  
         btnUpdate.Enabled = true;  
       }  
       // Bütün yazılımların listesi  
       sws = JsonConvert.DeserializeObject<Softwares>(GET(url));  
       Console.WriteLine(sws.software.Count);  
       //MessageBox.Show(sws.software.ToList().Count.ToString());  
       foreach (var item in sws.software)  
       {  
         lbSoftwares.Items.Add(item.description);  
       }  
     }  
     // GET Metodu --> string türünden JSON verisi döndürür. HttpClient  
     public string GET(string url, string id = "")  
     {  
       // Yazılımlardan birini veya hepsini alma seçeneği  
       if (id != "")  
         url = url +"/"+ id;  
       using (var httpClient = new HttpClient())  
       {  
         // JSON formata olacağını belirlemek  
         httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));  
         HttpResponseMessage response = httpClient.GetAsync(new Uri(url)).Result;  
         if (response.IsSuccessStatusCode)  
         {  
           return response.Content.ReadAsStringAsync().Result;  
         }  
         else  
           return string.Empty;  
       }  
     }  
     // Kurulu ve güncel sürümleri karşılaştırıp eşit değilse kullanıcı indirme bağlantısını açabilsin.  
     private void btnUpdate_Click(object sender, EventArgs e)  
     {  
       // İndirme bağlantısına gidilicek ve yazılım indirilecektir.  
     }  
   }  


Umarım yardımcı olacaktır. Uzun bir aradan sonra bir şeyler paylaşmak güzeldi.