Üçüncü tarafların verilere erişmesine ve bunları değiştirmesine yardımcı olan Facebook, Twitter vb.Gibi birçok web API'sını duydum. Bir web API'nın nasıl çalıştığını bilmek istiyorum. Bir web API'sinin temelleri nelerdir?
Kullanıcıların siteye erişebilmesi veya güncelleyebilmesi için sitem için bir API oluşturmak istersem, neyle başlamam gerekir?
En basit haliyle, herkesin URL'ler, parametreler ve efektler hakkındaki bilgileri arayabileceği ve yayınlayabileceği bir dizi GET/POST isteği oluşturursunuz. Salt okunur görevler için istek ALIN ve verileri değiştirecek her şey için POST istekleri alın sunucuda.
Gerekirse bir kimlik doğrulama sistemi ekleyin ve kendinize basit bir Web API'sına sahipsiniz.
A Web API sadece bir Arabirimdir standart HTTP istek yöntemleri aracılığıyla sisteminize (site gibi) erişime izin vermek için. Verilerin kendisi genellikle bazı standart biçimlerde ( JSON veya XML ) işlemeyi kolaylaştırır.
İşte 'TextWise' için bir örnek Web API'sı
Aslında şimdi şirketimin sanallaştırma platformu için bir API geliştiriyorum. Onları birkaç farklı yoldan gidebilirsiniz, ancak en sevdiğim (ve insanların anlayabileceği bir şey elde etmenin en hızlı yolu) basit HTTP GET istekleri kullanıyor ve bir JSON yanıtı döndürüyor.
URL'm şuna benzer:
domain.com/method/call/subcall?key=key&data=something
Sonra HTTP GET değişkenlerini parçalara ayırıyorum ve arayanın onlarla ne yapmak istediğini yapıyorum. Stack Exchange API geliştirmesine beta kullanıcı olarak kaydolmamın en büyük nedenlerinden biri, bunun muazzam bir öğrenme deneyimi olacağını biliyordum ve gerçekten de .
Genellikle, biri JS $ kodlanmış diziler döndürürüm, biri
result, temelde sadece çağrı başarılı olup olmadığını söyler ve değilse bir hata kodu/hata dizesi verir. Diğeri genellikle
data olarak adlandırılır ve içeriği, söz konusu çağrının belgelerinde açıklanır. Ayrıca, GET tabanlı API'lerin test edilmesi ve hatalarının ayıklanması çok daha kolaydır.
SOAP/XMLRPC) gibi birçok başka format var, sadece JSON'u seçmenin bana inanılmaz basitlik ve seçim özgürlüğü verdiğini görüyorum.
Örneğin, bir alan alan göndermem gerekiyorsa ve bir ton GET değişkeniyle uğraşmak istemiyorsam, bunu yapabilirim ( PHP'de örnek)
$to_send = base64_encode(json_encode($some_array));
Bu, diğer tarafta kolayca çözülür ve bana çalışacak düzinelerce değişken verirken, API üzerinden sadece 2-3 GET değişkenini kabul ediyor.
Sadece yöntemlerimi ve çağrılarımı kısa ve öz tutmaya çalışıyorum ve her çağrının tekdüze bir 'çalışmış veya başarısız' yanıtı ve ardından istenen verileri döndüreceği şekilde tasarlıyorum.
Bu aslında çok geniş bir soru. En temel anlamda, bir web API'si bir istemci (bir Web tarayıcısı gibi) bir Web sunucusuna bir tür HTTP isteği yaptığında çalışır. Sunucu, kullanıcının ne istediğini belirleme isteğini inceler ve sonra istemcinin istediklerini almak için incelediği verileri (sayfa gibi) döndürür. Bunlar sadece Web API'lerinin ortak noktalarından ibarettir; Bunun gerçekten sorunuzu cevaplamadığını anlıyorum, ancak sorunun neden bu kadar geniş olduğunu açıklamak istedim.
Bir istemcinin isteğini biçimlendirmesinin veya bir sunucunun yanıtını biçimlendirebilmesinin her yolu vardır ve bu nedenle herhangi birinin anlamlı olması için istemci ve sunucunun bazı temel kurallar üzerinde anlaşması gerekir. Genel olarak konuşursak, bugünlerde bu tür şeyler için kullanılan iki çok genel stil var.
zaktan Yordam Çağrısı (RPC)
RPC stili API'da, tüm API için genellikle yalnızca bir URL bulunur. Bunu, ne yapmak istediğiniz hakkında bilgi içeren bir tür belgeyi POST yaparak ve sunucu istediğiniz şeyi içeren belgeyi döndürerek çağırırsınız. Genel bilgi işlem terimlerinde, istek belgesi genellikle bir işlev adına ve bazı bağımsız değişkenlere sahiptir.
Bu API stili için bazı standartlar XML-RPC ve SOAP'dir. Bu standartlar, yaptığınız işlev çağrılarını tanımlamak veya hatta tüm API'yi tanımlamak için kullanılabilecek bir biçim oluşturmaya çalışır.
Temsili Durum Transferi (REST)
REST stili API'de, API için ad alanı: bir sunucu veya bir sunucunun içindeki bir klasör gibi bir URL'niz yoktur. birçok farklı nesne bulunur ve bu ad alanındaki her URL API'nın bir parçası olur. URL, sunucuya API'yi kullanmak istediğinizi söylemek yerine, sunucuya API'yı kullanmak istediğinizi söyler on. Daha sonra HTTP yöntemini ve muhtemelen istek gövdesini, ne yapmak istediğinizi açıklamak için kullanırsınız - bu nesneyi: GET (zaten orada olan bir şeyi al), POST ( yeni bir şey oluşturun), PUT (zaten orada olan bir şeyin yerine koyun) veya DELETE (zaten orada olan bir şeyden kurtulun). Kullanabileceğiniz birkaç fiil daha var, ancak bunlar en yaygın olanları.
Şimdiye kadar, REST için standart formatlardan bahsetmedim. Teorik olarak, hemen hemen her formatı kullanabilirsiniz. HTTP zaten ne yapmak istediğinizi ve ne yapmak istediğinizi söylemenizi sağlar, böylece istek gövdesinin formatı hemen hemen her şey olabilir: oluşturmak veya değiştirmek istediğiniz nesnenin bir temsili. Ancak pratikte, REST yazar yine de bir format üzerinde anlaşmaya varır, çünkü olası her formatı anlamak zor olurdu.