Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, Discus'ta yazılım mühendisi olarak çalışan Burak Kaya ve diğer eğitmenler tarafından sunulan teknik bir eğitim içeriğidir. İstanbul Konferansı'nda da sunulan içerik, REST ve SOAP web servisleri hakkında kapsamlı bilgiler sunmaktadır.
- Video, REST API'nin temel prensiplerini (URL kullanımı, HTTP eylemleri, başlık bilgileri) açıklayarak başlıyor ve ardından SOAP web servisleri, XML formatı, WSDL ve JAX-WS gibi teknolojileri ele alıyor. Eğitim, teorik bilgilerin yanı sıra kod örnekleri, demo uygulamaları ve soru-cevap oturumları içermektedir.
- Videoda ayrıca kimlik doğrulama, CORS (Cross-Origin Resource Sharing), veri dönüşümü ve farklı domainlerden REST servisine erişim gibi konular da ele alınmaktadır. Java kullanılarak XML-obje dönüşümleri, web servisi istemcisi geliştirme ve JAX-B kütüphanesi kullanımı gibi pratik uygulamalar adım adım gösterilmektedir.
- 00:04Sunum ve Konu Tanıtımı
- Konuşmacı Burak Kaya olarak kendini tanıtıyor ve şu an JavaScript üzerinde çalıştığını belirtiyor.
- Twitter'da "madbyk" ve GitHub'da "rest" kullanıcı adıyla olduğunu ve bugün REST konusunu ele alacağını söylüyor.
- 00:33REST Nedir?
- REST, HTTP protokolünün düzgün ve uygun bir kullanımıdır ve resmi açılımı "Representational State Transfer"tir.
- REST, veri veya belge yönetimi için HTTP protokolünün düzgün kullanılmasını sağlar.
- REST, okunabilir ve anlaşılabilirlik odaklı bir yaklaşıma sahiptir.
- 01:19REST'in Özellikleri
- REST'te eylemler metin tabanlıdır ve gönderilen komutlar (POST çağrıları gibi) anlaşılır şekilde tanımlanır.
- Düzgün URL kullanımı önemlidir; örneğin "create forum" gibi bir URL yerine belgeye uygun bir URL kullanılmalıdır.
- Düzgün HTTP eylem kullanımı önemlidir; sadece GET ve POST yerine OPTIONS gibi çeşitli eylemler kullanılabilir.
- Düzgün HTTP başlık bilgisi kullanımı da REST'te önemli bir unsurdur; Accept-Type, Content-Type gibi başlık bilgileri kullanılabilir.
- 02:57URL ve REST Kullanımı
- URL (Uniform Resource Locator) bir kaynağa adres göstermek için kullanılır, bir eylem değil bir belgeyi göstermek için kullanılır.
- Her kaynağın tek bir anlamlı tanımlayıcıyla ifade edilmesi önemlidir, örneğin "blog/post/32" yerine "blog/sunumlar/32" daha anlamlı bir adresdir.
- URL'de eylem kullanılmamalı, HTTP protokolü create, read, update, delete işlemleri için post, get, put, delete eylemlerini destekler.
- 05:09HTTP Eylemleri ve Farkları
- Create için post veya put kullanılabilir, update için put veya bazen post kullanılabilir, ancak genellikle patch kullanılır.
- Post eylemi her tekrarlandığında yeni bir nesne oluşturur, put ise mevcut nesneyi günceller.
- Patch, nesnenin tüm halini göndermek yerine sadece güncellenecek alanları göndererek daha verimli bir kaynak kullanımına sebep olur.
- 07:21HTTP Başlıkları ve API Tasarımı
- Accept header, sunucuya hangi formatları anladığını gösterir ve arama motoru optimizasyonu için önemlidir.
- Veri ile sunum katmanını birbirinden ayırmak için farklı formatlar (JSON, HTML, XML, YAML) kullanılabilir.
- Origin header, herkese açık bir API yazarak kendi uygulamanızı da bu API üzerinden çalışacak şekilde geliştirmenizi sağlar.
- 11:00REST ve API Tasarımı
- REST, veri istekleri için özel tek bir işlev tanımlamanızı sağlar.
- Tek bir çağrı yöntemi kullanarak test etme işlemi kolaylaşır.
- JSONP sadece okuma işlemleri için kullanılır ve REST mantığına uygun değildir.
- 13:36REST API Doğru Kullanımı
- REST API'lerde URL kısmında "create" gibi bir şey kullanmak yanlış bir yöntemdir, çünkü HTTP metodu ile API metodunu karıştırmaktadır.
- Doğru kullanım için trades altına doğrudan bir POST çağrısı yapıp bilgileri göndermek gerekir.
- En iyi yöntem, HTTP yönteminin ismini soyutlayarak sadece "create" gibi bir metod kullanmak ve ayrı bir URL oluşturma fonksiyonu kullanmaktır.
- 15:35REST API Uyumluluğu
- REST uyumlu olmak için sadece HTTP metotlarını doğru kullanmak yeterli değildir, URL yapısı da önemlidir.
- Twitter gibi bazı API'lerin REST prensiplerine uymadığı, bazı HTTP metotlarını kullanmadığı belirtilmiştir.
- GitHub, Asana ve Bugzilla gibi API'lerin REST prensiplerine daha iyi uyduğu, özellikle KarşıD'in tamamen REST üzerinden çalıştığı vurgulanmıştır.
- 18:15REST API Özellikleri
- REST API'lerde kimlik doğrulama önemli bir konudur ve çoğu API için zorunludur.
- HTTP Basic Authentication ve token kullanmak gibi kimlik doğrulama yöntemleri vardır, ancak token'ları URL'ye gömmek önbellekleme konusunda sorun yaratabilir.
- REST API'lerin keşfedilebilir olması gerekmektedir, yani tek bir ana bağlantı noktasından tüm alt bağlantı noktalarına erişim sağlanmalıdır.
- 23:00REST API'nin Geleceği
- REST API'ler zaten günümüzde yaygın kullanımda olup, gelecekte de önem kazanacaktır.
- REST API'ler temel ihtiyaçları karşılayıp genişletilebilir, HTTP altyapısı üzerinden çalışır ve ölçek konusunda gereksinimleri karşılar.
- Gelecekte herkesin bir paylaşımına odaklanacağı için REST API'ler daha da önem kazanacaktır.
- 23:56REST API Alternatifleri
- REST API'nin alternatifleri arasında SOAP ve XML tabanlı eski sistemler bulunuyor.
- REST API, veri ile çalışırken okunabilirlik ve sürdürülebilirlik açısından daha verimlidir.
- Web uygulaması geliştiriyorsanız, her cihaz ve program tarafından kolay kullanılabilmesi için REST, JSON veya XML ile gitmek tavsiye edilir.
- 26:44Discoverability ve HATEOAS
- REST API'nin bir amacı, istemcinin ne olduğundan habersiz kullanılabilmesidir.
- HATEOAS (Hypertext As The Engine Of Application State) adlı teknoloji, kaynakların birbirine bağlantı kurmasını sağlar.
- GitHub örneğinde olduğu gibi, bir kullanıcıya erişildiğinde, depoları ve diğer ilişkili kaynaklara doğrudan ulaşılabilir.
- 29:44Yetkilendirme ve Session Mantığı
- REST API, session mantığından farklı olarak her çağrıda kimlik bilgilerini göndermeyi bekler.
- Session mantığı yerine, her çağrı izole kabul edilir ve kendi içindeki verilerle işlem yapılır.
- REST API, verinin nasıl gösterileceği yerine nasıl transfer edileceği odaklıdır.
- 31:00JSON-P ve CORS
- JSON-P sadece GET işlemlerinde kullanılabilmekte, PUT gibi işlemler için uygun değildir.
- CORS (Cross-Origin Resource Sharing) header'ı, farklı domainlerden REST servise erişimi sağlar.
- Modern tarayıcılarda CORS ile farklı domainlerden veri erişimi yapılabilir.
- 33:11Web Servislerin Tarihsel Gelişimi
- Web servisleri tarihsel olarak SOAP web servislerinden bugüne kadar gelişmiştir.
- SOAP, Simple Object Access Protocol (Basit Nesne Erişim Protokolü) anlamına gelir.
- SOAP protokolü, nesnelerin transferini amaçlamaktadır.
- 35:20Web Servislerin Tanımı ve Özellikleri
- Web servisler, uzak çağrımlı iş yükü ve iş mantığını karşılayan birimlerden oluşur ve kullanıcı tarafından gönderilen verileri tüketerek talep edilen veriyi sunar.
- Web servis sağlayıcıları (endpoint) sunucu tarafındaki iş mantığını oluşturur ve istemci-sunucu ve veri alışverişi dilden bağımsız nesne tanımlayıcılar (XML, JSON, BSON) ile sağlanır.
- Web servisler, dil ve platform bağımsızlığını ortaya çıkarmak için tasarlanmıştır ve farklı programlama dilleri arasında iletişim kurmayı sağlar.
- 38:52SOAP Protokolü ve Web Servis Sözleşmesi
- SOAP (Simple Object Access Protocol), bir client'dan sunucuya nesne gönderirken kullanılan bir protokoldür ve web servisleri varsayılan olarak XML standardını kullanır.
- SOAP web servisleri dil ve platform bağımsız servisler yazmaya olanak sağlar ve nesne alışverişi izleme türünden olur.
- SOAP web servislerinde web servis sözleşmesi (kontrat) gereklidir ve bu sözleşmede XML ve XML bazlı standartlar kullanılır.
- 41:53SOAP Mesaj Yapısı ve VSDL
- SOAP mesajları zarflar içeriğinde gönderilir ve bu zarflar header ve body bölümlerine sahiptir.
- Web servis sözleşmesi VSDL (Web Description Language) uzantılı dosyalarla tanımlanır ve bu standart WSDL ve XML Schema teknolojilerini barındırır.
- Java tarafında dil bağımsız web servislerini oluşturmak için JAX-WS standartları kullanılır ve referans implementasyon olarak Metro kütüphanesi kullanılır.
- 45:46Java'da XML İşleme ve Demo
- Java'da XML işleme için JAX-B 2.2 en sık kullanılan standartlardan biridir.
- Java nesnesini XML'e dönüştürmek için JAX-B notasyonları kullanılır ve dönüştürülmek istenen sınıfın başına @XmlRootElement notasyonu getirilir.
- Java nesnesini XML'e dönüştürme işlemi için JAXBContext sınıfından instance oluşturulur ve marshal işlemi gerçekleştirilir.
- 48:32XML ve Java Nesneleri Arasındaki Dönüşüm
- XML verisinde yarıçapın 50 olduğu görülmekte, ancak bu değerin double türünde olduğunu bilmek için XSD teknolojisi kullanılmaktadır.
- Unmarshaller işlemi, XML nesnesinden Java nesnesine dönüşümü sağlar.
- XML şeması oluşturulması da mümkün olup, genel schema metoduyla sağlanır ve bu şema tür bilgilerini içerir.
- 51:00Web Servis Uygulaması Oluşturma
- Web servis uygulaması için NetBeans IDE'de bir web application projesi oluşturulmaktadır.
- Java 1.5 sürümüyle birlikte gelen annotation desteği sayesinde, bir sınıfı web servis endpoint olarak kullanmak için @WebService annotation kullanılır.
- Kitap nesnesi için XML dönüşümü için @XmlRootElement ve @XmlElement annotation'lar kullanılır.
- 57:24Web Servis Test Etme
- NetBeans'te web servis test sayfası oluşturulabilir ve servis metotları buradan test edilebilir.
- Web servis sözleşmesi (WSDL) XML formatında oluşturulmuş bir dosyadır ve bu sözleşmeye uyabilen her programlama dilinden servis çağrısı yapılabilir.
- JAX-WS standardı ile otomatik olarak WSDL ve XSD dosyaları oluşturulur, bu dosyalar web servisindeki nesnelerin şemasını içerir.
- 59:29SOAP Web Servis İstemcisi Geliştirme
- Java Web Application projesi oluşturularak "clint" adlı bir uygulama geliştirilecek.
- Web servis istemcisi geliştirilirken, VSDL (Web Servis Sözleşmesi) dosyası kullanılarak uzaktaki bir bağlantı sağlanır.
- VSDL dosyası indirilip, "disch code" komutu ile otomatik olarak proje yapılandırılır.
- 1:01:55Web Servis İstemcisi Yapısı
- VSDL dosyasından oluşturulan kitap nesnesi, serviste belirtilen istek ve yanıt listelerini içerir.
- Kitap servisi interface olarak yapılandırılmış ve VSDL dosyasındaki bilgiler içermektedir.
- İstemci tarafında "işlemci" adlı bir klasör oluşturulup, kitap servisi interface'ini implemente eden bir sınıf yazılır.
- 1:03:54SOAP Web Servis Kullanımı
- Uzaktaki sunucuda nesne elde etmek için "fake nesne" (sahte nesne) kullanılır.
- Kitap nesnesi oluşturulup, sevkiyat, kitap adı ve yayınevi bilgileri atanır.
- "kitap kaydet" metodu çağrılıp, servise kitap nesnesi gönderilir ve sunucu tarafında ekrana yazdırılır.
- 1:08:14İstemci Tarafında Veri Alma
- Servisten dönen değer istemci tarafında alınabilir.
- İstemci tarafında import edilen kitap sınıfı kullanılarak, servisten gelen değeri ekrana yazdırabiliriz.
- SOAP web servisleri, XML standardı üzerinden SOAP elemanları kullanarak mesaj iletimi sağlar.
- 1:12:57SOAP ve REST Karşılaştırması
- SOAP web servisleri artık mazide kalmış olsa da, kurumsal uygulamalar arasında hala yaygın kullanılmaktadır.
- Yeni bir uygulama geliştirilirken, REST web servisleri tercih edilmesi tavsiye edilmektedir.
- SOAP web servisleri XML formatını kullanırken, REST web servisleri daha esnek formata sahiptir.