Web API'ları nasıl çalışır? [kapalı]


17

Üçü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?


1
Bu çok önemli değil, siteniz hangi dilde oluşturuldu?
ocodo

Facebook web API'sinin belgelerini henüz okudunuz mu? developers.facebook.com/docs Eğer okumadıysanız neden olmasın? Onu okumak varsa, neyi belirli sorular var mı?
S.Lott

tamam @ S.Lott yapacağımdan eminim!
Harish Kurup

Yanıtlar:


23

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 istekleri ve sunucudaki verileri değiştirecek her şey için POST isteklerini alın .

Gerekirse bir kimlik doğrulama sistemi ekleyin ve kendinize basit bir Web API'sına sahip olun.

Bir Web API sadece olduğunu Arayüz standardı yoluyla sisteme (örneğin sitesi) erişim sağlamak için HTTP isteği yöntemlerle . Verilerin kendisi, işlenmesini kolaylaştırmak için genellikle bazı standart biçimlerde ( JSON veya XML gibi ) sarılır .


İşte bir olan örnek 'TextWise' için Web API


tamam. hangi dat biçimi JSON veya XML kullanmak için en iyi olacak ??
Harish Kurup

1
JSON - XML'in manipüle edilmesi çok zordur ve JSON'a göre herhangi bir avantaj sağlamaz. Ve XML'de büyük ek yükünüz var çünkü kapanış etiketlerine sahip olmalısınız.
Slawek

1
@Harish. Bir kez daha, bu tamamen 'amacınıza / durumunuza bağlı' olanlardan biridir. JSON formatını tercih edebilirim, eğer işteki sistemlerimizden biri için yapsaydım, dahili XML ayrıştırma yeteneklerine sahip olduğu için XML kullanardım, ancak JSON değil. Bu, kod bakımının daha kolay olduğu ve diğer geliştiricilerin komutlara aşina olacağı anlamına gelir.
Dan McGrath

1
@Harish, birini tercih etmek ve önce serbest bırakmak iyi bir fikirdir, ancak hem XML hem de JSON sağlamak kullanıcılarınıza yardımcı olacaktır.
ocodo

Uygulamada XML ve JSON benzer dosya boyutlarına gzip. JSON (JSON XML'den daha yeni) doğru kademeli bir eğilim görüyorum, ancak şu anda her ikisini de sunmak çok yaygın. JSON veri alışverişi için idealdir, XML ise belge alışverişi için idealdir.
Brian

5

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 isteklerini 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 öyleydi .

Genellikle, resulttemelde sadece çağrı başarılı olup olmadığını söyleyen ve değilse bir hata kodu / hata dizesi veren iki JSON kodlu diziler, bir varlık döndürür. Diğeri genellikle sadece denir datave 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, çok fazla 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, 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.


2

Bu aslında çok geniş bir soru. En temel anlamda, bir web API'si bir istemci (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.

Uzaktan Yordam Çağrısı (RPC)

RPC stili API'da, tüm API için genellikle yalnızca bir URL vardır. Bunu, ne yapmak istediğiniz hakkında bilgi içeren bir tür belge POSTing yaparak çağırırsınız ve sunucu, ne istediğinizi içeren belgeyi döndürür. 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ı veya hatta tüm API'yi tanımlamak için kullanılabilecek bir biçim oluşturmaya çalışır.

Temsilci Devlet Transferi (REST)

Bir REST stili API'sinde, ad alanı olarak API için çok fazla URL'niz yoktur : bir sunucu veya sunucunun içinde çok sayıda farklı nesnenin bulunduğu ve bu ad alanındaki her URL'nin bir parçası olduğu bir klasör API'sı. Aksine API kullanmak istediğiniz sunucuyu anlatan yerine, URL API kullanmak istediğiniz sunucuyu söyler üzerinde . Daha sonra ne yapmak istediğinizi açıklamak için HTTP yöntemi ve muhtemelen istek gövdesini kullanmak için bu nesne: POST, PUT (zaten orada olan bir şeyi değiştirmek), (yeni bir şey yaratmak) (zaten orada olan bir şeyi almak) GET veya SİL (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 yazarları yine de bir format üzerinde anlaşmaya eğilimlidir, çünkü mümkün olan her formatı anlamak zor olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.