Upload
yigit-gueler
View
70
Download
2
Embed Size (px)
Citation preview
Neden API?
API yapmak önemli, çünkü:• Bilgisayardan bilgisayara iletişim önem
kazanıyor.
• Mobil uygulamalar için gerekli.
• JS temelli, tek sayfalık uygulamalar için gerekli.
APIApplication programming
interface
UPAUygulama programlama
arayüzü
API bir insan olsa
Banka gişe memuru
• Para çekmek istediğimizi söylüyoruz.
• Kimliğimizi kontrol ediyor.
• Eğer hesapta yeterli para varsa:
• Hesaptaki parayı azaltıyor.
• Parayı bize veriyor
• Makbuz (log) imzalatıyor.
Gerisi bizi ilgilendirmiyor.
Web API
Moviegenieİlk IMDB uygulamalarından biriYapıldığında IMDB API'si yoktu.
REST nedir?• REpresentational State Transfer.
• Dağıtık sistemler için düşünülmüş bir mimari stil.
• Standart değil, tavsiyeler grubu.
• Kolay anlaşılır, hafif sistemler.
Amaç
CreateRetreiveUpdateDelete
Kaynak, nesne ayrımı
REST temel öğeleri:• Suret (representation)
• URI
• Durumsuzluk (statelessness)
• HTTP Eylemleri:
• GET
• POST
• PUT
Suret (Representation)
Nesnenin belirli bir şekilde ifade edilmiş hali.<Person> <id>73</id> <name>Yigit Guler</name> <email>[email protected]</email> <country>Turkey</country></Person>
Nesnenin belirli bir şekilde ifade edilmiş hali.{ "id": "73", "name": "Yigit Guler", "email": "[email protected]", "country": "Turkey"}
URI
There are only two hard things in Computer Science: cache invalidation and naming things.
-- Phil Karlton
Hiyerarşi önemliÖrnek olarak iki URL'ye bakalım.http://www.nytimes.com/technology/personaltech/oneplus-one-review/http://www.hurriyet.com.tr/gundem/27358517.asp
Her bir taksim işareti (/) bir hiyerarşi belirtmeli.
Sözün özü:
İyi bir URL, kendi kendini ifade etmeli. Kullanıcı dokümantasyona ne kadar az bakıyorsa o kadar iyi.— Yigit Güler
URL Okunur Olmalı• Dipdibeyazılmışyazılardan oluşmamalı.
• Gerekiyorsa kelime aralarında kısa tire kullanımından çekinilmemeli.
Sonunda format uzantısı olmamalı• URI nesneyi ifade etmeli, gösterim şeklini
değil.
• Çirkin
• Parametre gönderdiğinizde daha da çirkinleşiyor: http://ornekservisv.com/api/listings.json?limit=20&offset=4
• Sahte bir durum.
• ACCEPT header'inin işini URI yapmamalı.
Eylem içermemeli
http://ornekservis.com/uyegetir/?id=74
http://ornekservis.com/uyeler/74/
İyi bir URI asla değişmemeli
Parametre Kullanımıhttp://ornekservis.com/uyeler/?cinsiyet=erkek
HTTP
HTTP isteği
GET HTTP/1.1 Host: hipolabs.com Cache-Control: no-cache Accept: text/html,application/xhtml+xml,application/xml; … User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 …
HTTP Cevabı
HTTP/1.1 200 OK Date: Sat, 23 Nov 2014 18:31:04 GMT Last-Modified: Wed, 01 Sep 2014 13:24:52 GMT Accept-Ranges: bytes Content-Length: 32859 Cache-Control: max-age=21600, must-revalidate Expires: Sun, 24 Nov 2014 00:31:04 GMT <!DOCTYPE html> <html lang="en" id="home-page"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0" /> ...
HTTP EYLEMLERİ
GET• En sık yapılan istek.
• Güvenli ve bağımsız olmalı.
• Yan etkileri ihmal edilebilir olmalı.
Örnek:GET /notifications/
DELETE• Nesneyi silmek istiyoruz.
Örnek:DELETE: /users/7/
PUTNesneyi değiştirmek istiyoruz.Değiştirmek istediğimiz nesneyi URI ile belirtiyoruz.
Örnek:PUT: /users/7/{"name": "Şehrazat Evliyaoğlu"}
POST• Gönderilmiş bilgi ile birşeyler yapmak
istiyoruz.
• Genelde:
• Yaratmak
• Değiştirmek
• PUT ile en büyük farkı URI
POST: /users/
{"name": "Cevat Kelle"}
Önemli Noktalar
Durumsuzluk
Header ve Durum kodları
İşe yarayan araçlar
1 - Postman!
2 - Mitmproxy