REST API amacı?


17

Her şeyden önce, bunun şu anda bir eklenti olduğunu anlıyorum ama kesinlikle WordPress'in neredeyse bir parçası. Umarım bu konu dışı olarak işaretlenmez.

Resmi belgelerini, diğer birçok makaleyi okudum ve öğretici videoları izledim, ancak hala bazı noktaları elde etmiyorum .. Bu kesinlikle WordPress'in geleceği, mobil uygulama geliştirme ve kullanma / veri paylaşımı için çok kullanışlı farklı siteler ancak: yalnızca sitem için ne yapar?


Bunu düşün:

Şu anda yorum üzerinde çalışıyorum. Yorum bölümünün yalnızca kullanıcı yorum bölümüne kaydırıldığında yüklenmesini istiyorum (-200px ofset ile gecikme olmaz) .

  • Kullanıcı o noktaya geldiğinde ajax çağrısını tetikleyeceğim
  • Ajax çağrısı vb. Gibi bazı veriler gönderir.post_id
  • WP_Comment_Query()Sunucuda çalıştır
  • Gönder JSONveri comment ilişkiler, isimler, içerik ile müşteriye geri vb
  • Kullanım JavaScript document.createElement(), innerHTML vb oluşturmak ve çıkış yapılan yorumlar için

Şimdi .. Neden REST API'yi kullanayım? Benim için ne yararı var? Sadece dayanıklı mı?

Hala bulamadık .. tüm çıkışa alıyorum verileri JavaScript kullanmak gerekir herhangi iyi makaleleri neden yoksa DİNLENME API kullanmak gerektiği için (siteleri ve mobil uygulama gelişimini arasındaki veri aktarımı hariç) ..


REST API'yi tanımladığınız şekilde kullanmak, size yapılandırılmış ve birleştirilmiş bir yoldan fayda sağlayacaktır . İçerik toplayıcılarla (yorum sorgusu) veya yanıt biçimiyle (json) ilgilenmeniz gerekmez. Önbelleklemede bazı iyileştirmeler de olabilir. Genel olarak gördüğüm dezavantaj, şablonlamanın tamamen - arka uç geliştirici «görüşümde - performans sorunlarını artıran tarayıcıya taşınmasıdır.
David

JSON verilerini istemciye geri göndermeyi nasıl planlıyorsunuz? Sunucu tarafı kodunu nasıl oluşturuyorsunuz?
czerspalace


@David Temelde REST API tüm sorguların kendisi yapar ve ben sadece sorgu dizeleri parametre olarak beslemek gerekir? Templating hakkında .. Ne dediğini anlıyorum, neyse ki donanım her yıl daha da güçleniyor. Ne yazık ki her zaman bu konuya dahil olmayı reddeden insanlar olacaktır (eski IE kullanıcıları, sana bakıyorum) .
N00b

@ czerspalace 1. WP_Comment_Query() 2. Her biri whiledöngü 3'teki parametre dizisi ile yorum dizisi oluşturun . json_encode() 4. echo kodlanmış veri geri. Tüm bunlar wp_ajaxve / veya wp_ajax_noprivişlev.
N00b

Yanıtlar:


8

Mevcut durumunda, yetkili bir geliştirici için gerçek bir avantajı olmayan kötü tasarlanmış bir özelliktir.

Temel fikir, bu cevabın yazıldığı sırada olduğu gibi, WordPress çekirdek işlevselliğini JSON REST API olarak ortaya koymaktır. Bu, WordPress "iş" mantığının kullanıcı arayüzünden ayrılmasını ve wordpress'ten bilgi yönetmek ve çıkarmak için farklı tam veya kısmi kullanıcı arayüzleri oluşturulmasını sağlar. Bu tek başına bir devrim değil, bir evrimdir. yalnızca, kendi başına gönderme API'sı için HTTP'yi akıcı hale getiren XML-RPC API'sinin değiştirilmesi.

Herhangi bir evrimde olduğu gibi, her adımda kendinize, eski devletten ne gibi bir avantaj elde edeceğinizi sorabilirsiniz ve cevap muhtemelen "çok fazla değil", ancak umarım adımlar büyük bir fark için birikir.

Peki neden bu cevabın olumsuz önsözü? Çünkü yazılım geliştirici olarak benim deneyimim, cevap vermek için somut kullanım durumları olmadan gerçekten yararlı olan genel bir API tasarlamanın nadiren mümkün olmasıdır. Buradaki somut bir kullanım durumu, otomatik wordpress yönetimi için XML-RPC API'sinin yerini alabilir, ancak ilgili herhangi bir ön uç siteye özgü olmalıdır ve istemciden sunucuya gönderilen her istek için büyük bir performans cezası olduğundan İstediğiniz sonucu kullanıcıların mutlu kalacağı bir şekilde elde etmek için farklı API'ların toplu kullanımı. Bu, ön uç için önemsiz olmayan kullanım için, AJAX yolunu ve REST-API yolunu kullanma arasındaki geliştirme çabasında çok az fark olacağı anlamına gelir.


Teşekkürler, bu işleri daha da kötüleştiriyor! İçtenlikle hangi yolu seçeceğimi anlayamıyorum .. Bildiğim şey muhtemelen gelecekte bir mobil uygulama yapmam gerekecek. Sizin tavsiyeniz şu anki durumdaki REST API'nin saçma mı?
N00b

Hayır, sadece kutudan gerçek bir avantaj göstermemesi. Kullanıp kullanmamaya gelince, her zaman olduğu gibi daha iyi bildiğiniz aracı kullanmalısınız, özellikle geri kalan api'nin hala betada olduğunu dikkate almalısınız. Hala daha temiz bir url, gerekirse önbelleğe alabileceğiniz olanlar, ajax bitiş noktası ile yapamayacağınız bir şey vereceği için zaten api'nin çekirdeği olan api kısmı ile rota kaydetmeyi düşünürdüm.
Mark Kaplun

3

İki kapsamlı avantaj:

  1. Yönetici arayüzü olmadan (sonunda) tüm yönetici görevlerini yapabilirsiniz.
  2. Görüntüleme için tüm verileri alabilir ve kullanıcı arabirimini (ve PHP'yi yazarak) tamamen ortadan kaldırabilirsiniz.

Örneğinizle ilgili olarak,

3. ve 4. adımları REST API ile değiştirin ve 1., 2. ve 5. adımları Backbone.js ile değiştirin. BOOM, dinamik web uygulaması. Ya da bunun yerine Python ile siteniz için gerekli karmaşık yönlendirmeyi yapmakta daha rahat olursunuz.


Im çok herkes çevrimiçi söylüyor gerçeği hakkında rahatsız dinamik web uygulaması anlamı çok öznel (ve onlar tam olarak ne söyleme yüzden yıllardan) Ben karşılaştırılır değil% 100 know-do anlama geldiğini değil dinamik web .. Senin versiyonun ne? Bu REST API kullanıp kullanmamayı bilmem gereken bir şey gibi ..
N00b

2
Diğer statik blog sayfalarına bağlantı veren statik blog sayfalarını oluşturmanın ötesinde bir şey anlamına gelen uygulama, daha sorunsuz bir "uygulama gibi" deneyim. Omurga bölgesindeki örneklere ilerleyin .
Milo

3

Aslında birkaç şey.

  1. Tüm sayfa yüklemesinin hesaplanmasını gerektirmek yerine, belirli işlevleri gerektiği gibi çalıştırmanıza izin verir. Böylece, yalnızca API bitiş noktasını çağırarak ve sayfanızdaki verileri güncelleyerek bir sayfayı yenilemeye ihtiyaç duymadan yorumları düzenli olarak oldukça düşük bir ek yükle güncelleyebilirsiniz. Bu konsept, sonunda "istemci" sitesini hızlı bir şekilde yükleyen ve sayfanın HTML'sini her seferinde yeniden çekmeye gerek kalmadan tüm sayfa "değişikliklerini" taklit eden SPA'lara (tek sayfa uygulamaları) yansıtılacaktır. Bu, Angular, Ember ve React gibi çerçevelerin ortaya çıkmasıyla zaten çok popüler. Siteler, son kullanıcıya biraz hesaplama gücü yüklerken (oluşturma döngüsü, iş dışı mantık) ve sunucuya yapılan genel çağrı sayısını önemli ölçüde azaltırken (yalnızca ihtiyacınız olan verileri çekin)

  2. İş mantığını ve oluşturucuyu ayırır. Evet, API'yı sonuçları tüküren başka bir PHP sitesiyle kullanabilir veya bahsettiğiniz gibi Javascript ile işleyebilir, ancak yerel bir mobil uygulama, masaüstü uygulaması vb. İle de kullanabilirsiniz. Sadece bu değil, aynı zamanda her biri aynı API ile konuşur ve sürekli olarak aynı iş mantığını gerçekleştirir, bu da API'yi tüketen çeşitli istemciler arasında tutarlılık ve güvenilirlik yaratır.

API'lar iyidir çünkü mantık ve görüntüleme endişelerini ayırırlar.


İlk nokta hakkında .. Neden düzenli JavaScript ajax aralıklarla güncellemeleri kontrol ve dinamik güncelleme daha iyi?
N00b

2
Eh, "normal" ajax çağrıları sadece bir API çağırıyor! Gerçekten bir fark yok. REST API'nin amacı, temel Wordpress işlevselliği için böyle bir API sağlamaktır. Bu şekilde AJAX, yerel uygulamalar, masaüstü uygulamaları vb. Kullanarak daha fazla işlem yapabilirsiniz. Bunun "REST" kısmı, API'nın nasıl geliştirileceğini tanımlayan bir kurallar / standartlar sistemidir. sürdürmek.
Colt McCormack

2

WordPress REST API yeni bir özelliktir. Tek sayfa js tahrikli uygulamalar ve WordPresses bir uygulama platformu olmak arzusu ile bu çok mantıklı. Plan, XML-RPC'yi REST API ile değiştirmektir (bu yalnızca güvenlik nedeniyle iyi bir şeydir!)

https://make.wordpress.org/core/2015/09/21/wp-rest-api-merge-proposal/

  • Görünüşe göre New York kez yeni site üzerine inşa edilmiştir .
  • Mobil uygulamaların ve diğer harici hizmetlerin wp içeriğine erişmesini sağlar ( wp-cli gibi )
  • Geliştiricilerin, haftanın en sevdiği JSON tüketen çerçevesi ile tek sayfalık bir uygulama ön ucu oluşturmasına ve tüm harika etkileşimlerin parmaklarının ucunda olmasını sağlar.
  • Endişelerin ayrılmasına (yukarıda belirtildiği gibi) ve arka uç ve ön uç takımlar arasında daha fazla bağımsızlığa izin verir.

WordPress'i öne çıkarmak için başka bir araç kümesi. Ve bulunduğumuz yere ulaşmak için kıvrımlı bir yolculuk olmasına rağmen, onu keşfetmek ve anlamak için zaman ayırmaya değer olduğunu düşünüyorum.


1

İlk önce - REST hafiftir

Tek satırda - REST API'lerini kullandığımızda, tüm veri oluşturma işlemlerini istemci tarafında (döngüler, koşullar ve sunucu tarafı çağrıları vb.) Bant genişliğinden tasarruf ediyoruz ve aynı zamanda uygulamamız herhangi bir mobil platform, 3. taraf entegrasyonları ve modülerleştirilmiş ( ön uç ve sunucu tarafı arasındaki endişenin ayrılması).

Bunu istemiyor musun?


0

@Milo'nun bahsettiği 2 harika noktaya ek olarak, verilerimi WordPress dışı uygulamalara göstermek için özellikle REST API'sini kullanıyorum. WordPress veritabanımızdan bilgi alan bir Chrome uzantısına sahibiz ve bu, REST API uç noktalarına POST istekleriyle isabet ederek gerçekleştirilir.


0

SABİT Altyapı

REST API tutarlı ve insan tarafından okunabilir. Kendi kendini belgeliyor.

GET wp-json/wp/v2/postsne yaptığı oldukça açıktır. Bu GETbazı mesajları s.

Bir ad alanınız wp, bir sürümünüz v2ve bir nesne koleksiyonunuz varposts

Ne olduğunu tahmin edebiliyor musunuz GET wp-json/wp/v2/posts/5? Nasıl olur: GET wp-json/wp/v2/posts/5/comments Nasıl olur:GET wp-json/shop/v2/orders/345/lines/11/price

Bir geliştirici buna bakarak kolayca tahmin edebilir , dokümantasyonu okumadan bile 11siparişin satır fiyatını alacaktır 345. Geliştirici shop, ad alanı olarak Eklenti'den geldiğini bile kolayca söyleyebilir .

Peki ya POST /wp-json/v2/posts title=New Blog Post nasıl?PUT /wp-json/v2/posts title=New Title

Bu da oldukça açık. Yeni bir gönderi yapar. Bu arada, yeni gönderinin kimliğini döndürür. AJAX VEYA REST API ile ilgili değil. AJAX, REST API'sine erişen bir teknolojidir . Oysa, daha önce, aşağıdaki gibi bir sürü soyut ajax fonksiyon ismi bulmalısınız get_price_for_lineitem( $order, $line ). Bu sadece bir sayı mı yoksa bir JSON nesnesi mi döndürecek? Emin değilim, belgeler nerede. Ah ... ajax çağrısıydı get_order_line_priceya get_lineitem_price.

Geliştiricinin bu kararları vermesi gerekmez, çünkü mevcut wp-jsonAPI kendi uç noktalarınızı oluştururken izlenecek iyi bir temel model sağlar. Elbette, bir eklenti veya api geliştiricisi bu kuralları ihlal edebilir, ancak genel olarak önceden ayarlanmış bir standardı takip etmek daha kolaydır ve çoğu geliştirici zaten ayarlanmış bir deseni takip etmeyi tercih eder (şimdi yaygın jQuery modellerinin ne kadar olduğuna bakın).

Dikkat dağıtmadan soyutlama

Nasıl POST /wp-json/mysite/v1/widgets title=Foobarçalıştığı umurumda mı? Hayır! Sadece yeni bir tane oluşturmak istiyorum Widgetve bunun karşılığında kimliği istiyorum. Sayfayı yenilemeden ön ucumdaki bir formdan yapmak istiyorum. Bir URL için istekte bulunursam, PHP, C #, ASP.NET veya başka bir teknoloji olup olmadığı umurumda değil. Sadece yeni bir Widget oluşturmak istiyorum.

REST API, arka ucu önden ayırır. Teknik olarak, API'niz yeterince iyiyse, tüm arka uç yığınınızı değiştirebilirsiniz. Aynı REST API yapısını koruduğunuz sürece, API'ya bağlı olan hiçbir şey etkilenmez.

REST API'niz yeterince basit ve tutarlıysa, bir Widgetsnesne koleksiyonu gibi bir isim ve Widget/2tek bir varlığı belirtmek gibi bir isim / tanımlayıcı kullanarak, bu API'yı aşağı yukarı temel veritabanı tesisatından dolayı çok farklı bir teknolojiye yazmak gerçekten basittir kodu.

Standart HTTP İsteği fiillerini kullanır.

REST API'leri, web'in nasıl çalıştığından ve standart veri CRUD işlevlerine eşleme kullandığınız VERB'lerden (read: action) yararlanır.

CREATE : POST
READ   : GET
UPDATE : PUT/PATCH
DELETE : DELETE

Daha fazla HTTP fiili var, ancak bunlar temeller. İnternet üzerinden yapılan her talep bu fiilleri kullanır. Bir REST API'si, web'in istek üzerine oluşturulduğu modelin hemen üstünde yer alır. Arada herhangi bir iletişim katmanına veya soyutlama modeline gerek yoktur. Bu yalnızca bir URL'ye yönelik standart bir http isteğidir ve bir yanıt döndürür. Bundan daha basit olamazsınız.

Temel olarak, bir geliştiricinin web'in gerçekte nasıl çalıştığının somun ve cıvatalarından daha fazla haberdar olmasını sağlar ve temel protokollerin nasıl çalıştığını anlamaya yaklaştığınızda, daha verimli ve daha iyi bir ürün elde edersiniz.

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.