52

Rest API - Özgür Web Günleri 2014

Embed Size (px)

Citation preview

Page 1: Rest API - Özgür Web Günleri 2014
Page 2: Rest API - Özgür Web Günleri 2014

REST API

H. Yiğit Güler

[email protected]@hyigitguler

Page 3: Rest API - Özgür Web Günleri 2014
Page 4: Rest API - Özgür Web Günleri 2014

Neden API?

Page 5: Rest API - Özgür Web Günleri 2014

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.

Page 6: Rest API - Özgür Web Günleri 2014

APIApplication programming

interface

Page 7: Rest API - Özgür Web Günleri 2014

UPAUygulama programlama

arayüzü

Page 8: Rest API - Özgür Web Günleri 2014

API bir insan olsa

Page 9: Rest API - Özgür Web Günleri 2014

Banka gişe memuru

Page 10: Rest API - Özgür Web Günleri 2014

• 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.

Page 11: Rest API - Özgür Web Günleri 2014

Gerisi bizi ilgilendirmiyor.

Page 12: Rest API - Özgür Web Günleri 2014

Web API

Page 13: Rest API - Özgür Web Günleri 2014

Moviegenieİlk IMDB uygulamalarından biriYapıldığında IMDB API'si yoktu.

Page 14: Rest API - Özgür Web Günleri 2014
Page 15: Rest API - Özgür Web Günleri 2014
Page 16: Rest API - Özgür Web Günleri 2014
Page 17: Rest API - Özgür Web Günleri 2014

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.

Page 18: Rest API - Özgür Web Günleri 2014

Amaç

Page 19: Rest API - Özgür Web Günleri 2014
Page 20: Rest API - Özgür Web Günleri 2014

CreateRetreiveUpdateDelete

Page 21: Rest API - Özgür Web Günleri 2014

Kaynak, nesne ayrımı

Page 22: Rest API - Özgür Web Günleri 2014

REST temel öğeleri:• Suret (representation)

• URI

• Durumsuzluk (statelessness)

• HTTP Eylemleri:

• GET

• POST

• PUT

Page 23: Rest API - Özgür Web Günleri 2014

Suret (Representation)

Page 24: Rest API - Özgür Web Günleri 2014

Nesnenin belirli bir şekilde ifade edilmiş hali.<Person> <id>73</id> <name>Yigit Guler</name> <email>[email protected]</email> <country>Turkey</country></Person>

Page 25: Rest API - Özgür Web Günleri 2014

Nesnenin belirli bir şekilde ifade edilmiş hali.{ "id": "73", "name": "Yigit Guler", "email": "[email protected]", "country": "Turkey"}

Page 26: Rest API - Özgür Web Günleri 2014

URI

Page 27: Rest API - Özgür Web Günleri 2014

There are only two hard things in Computer Science: cache invalidation and naming things.

-- Phil Karlton

Page 28: Rest API - Özgür Web Günleri 2014

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.

Page 29: Rest API - Özgür Web Günleri 2014

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

Page 30: Rest API - Özgür Web Günleri 2014

URL Okunur Olmalı• Dipdibeyazılmışyazılardan oluşmamalı.

• Gerekiyorsa kelime aralarında kısa tire kullanımından çekinilmemeli.

Page 31: Rest API - Özgür Web Günleri 2014

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ı.

Page 32: Rest API - Özgür Web Günleri 2014

Eylem içermemeli

Page 33: Rest API - Özgür Web Günleri 2014

http://ornekservis.com/uyegetir/?id=74

Page 34: Rest API - Özgür Web Günleri 2014

http://ornekservis.com/uyeler/74/

Page 35: Rest API - Özgür Web Günleri 2014

İyi bir URI asla değişmemeli

Page 36: Rest API - Özgür Web Günleri 2014

Parametre Kullanımıhttp://ornekservis.com/uyeler/?cinsiyet=erkek

Page 37: Rest API - Özgür Web Günleri 2014

HTTP

Page 38: Rest API - Özgür Web Günleri 2014

HTTP isteği

Page 39: Rest API - Özgür Web Günleri 2014

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 …

Page 40: Rest API - Özgür Web Günleri 2014

HTTP Cevabı

Page 41: Rest API - Özgür Web Günleri 2014

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" /> ...

Page 42: Rest API - Özgür Web Günleri 2014

HTTP EYLEMLERİ

Page 43: Rest API - Özgür Web Günleri 2014

GET• En sık yapılan istek.

• Güvenli ve bağımsız olmalı.

• Yan etkileri ihmal edilebilir olmalı.

Örnek:GET /notifications/

Page 44: Rest API - Özgür Web Günleri 2014

DELETE• Nesneyi silmek istiyoruz.

Örnek:DELETE: /users/7/

Page 45: Rest API - Özgür Web Günleri 2014

PUTNesneyi değiştirmek istiyoruz.Değiştirmek istediğimiz nesneyi URI ile belirtiyoruz.

Örnek:PUT: /users/7/{"name": "Şehrazat Evliyaoğlu"}

Page 46: Rest API - Özgür Web Günleri 2014

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"}

Page 47: Rest API - Özgür Web Günleri 2014

Önemli Noktalar

Page 48: Rest API - Özgür Web Günleri 2014

Durumsuzluk

Page 49: Rest API - Özgür Web Günleri 2014

Header ve Durum kodları

Page 50: Rest API - Özgür Web Günleri 2014

İşe yarayan araçlar

Page 51: Rest API - Özgür Web Günleri 2014

1 - Postman!

Page 52: Rest API - Özgür Web Günleri 2014

2 - Mitmproxy