Özel bir REST API'sı oluşturma


10

Kullanıcı girdisi alır, özel bir veritabanı arar ve sorgu sonuçlarını görüntüler bir WordPress.org sitesi var. Wpdb sınıfı kullanarak bu çalışma var . Şimdi bir android uygulaması için bu çalışmaya çalışıyorum.

Anladığım kadarıyla, bir RESTful sunucu oluşturmak bu tür şeyler için mevcut 'en iyi uygulama'. Bunu yapmama yardımcı olabilecek bazı eklentilere baktım ve karşılaştım:

  1. json-rest-api - Bana öyle geliyor ki bu sadece temel WordPress işlevselliğini ortaya koyuyor (yani mesajlar, sayfalar, kullanıcılar, vb.) ve varsayılan olmayan tablolarda özel sorguları yürütmek için bunu nasıl alacağımı göremiyorum.

  2. Bu blog yazısı , wp mvc'nin 2 yıldan fazla bir süredir güncellenmediği için tam olarak istediğim şeyi yaptığını söylüyor , bu yüzden bunu dışlıyor.

  3. Jetpack de var ama gördüğüm kadarıyla, json-rest-api bunun güncellenmiş versiyonu ve sadece çekirdek işlevsellik veriyor gibi görünüyor.

Bu eklentilerden herhangi birinin özel uç noktalar için çalışmasını sağlamanın bir yolu var mı? Yoksa henüz bulamadığım başka eklentiler var mı?

Bir eklenti kullanmazsam, kendiminkini yuvarlamak zorunda kalacağımı düşünüyorum. Ben sıfırdan (kullanmaktan ya bunu yapabilirsiniz wpdb, msqliya da bir şey) ya gibi bir API yardımıyla Restler .

Kendi başımı döndürürsem temamda bir şablon oluşturmalı mıyım, içindeki REST öğelerini yapmalı ve bu temayı gösterge tablosundaki bir sayfaya mı atamalıyım? Yoksa bunun için WordPress'ten ayrı çalışan başka bir sunucunun olması daha mı iyi olur?

Görebildiğim kadarıyla bunlar benim tek seçeneklerim. Bu tür şeyler için önerilen en iyi uygulamaların neler olduğunu bilmek istiyorum. Başka hiç kimsenin bunu yapmadığına inanmakta zorlanıyorum. Göz ardı ettiğim herhangi bir seçenek var mı?


Sonunda ne yaptın? Ben wp dinlenme api için özel yollar / uç noktaları oluşturmaya çalışıyorum ve 1) belgeler korkunç 2) web çevresinde sıfır örnekler vardır. Hangi yolu kullandığınızı bildirin lütfen!
Jacksonkr

1
Wordpress dışında kendi API'mı oluşturmaya karar verdim, ancak aynı veritabanına erişimi var. Aslında bununla hiç ilgilenmedim, çünkü bu sadece bir yan proje ve başka şeylerle çok meşguldüm: P. Ben olsaydım symfony2 ya da laravel çerçevelerine bakardım . Çalıştırmak ve çalıştırmak için gerçekten hızlı ve kolaydır.
Yep_It's_Me

Yanıtlar:


15

TL; DR

Evet, WordPress kesinlikle bir mobil uygulama için arka uç görevi görebilir. Evet, bir sayfa dinlenme bitiş noktası / arayüzü olarak işlev görebilir. Hayır, bir tema şablonu mantık için doğru bölge değildir. Kendi eklentinizi yazın.


İşaretçiler

Başka hiç kimsenin bunu yapmadığına inanmakta zorlanıyorum.

Birine göre var. Birden fazla. Ve yalnız olmadığımdan neredeyse eminim. "Kimse bu konuda kapsamlı blog yazmamıştır" muhtemelen daha doğru bir kavramdır.

Bir eklenti kullanmazsam, kendiminkini yuvarlamak zorunda kalacağımı düşünüyorum. Bunu sıfırdan (wpdb, msqli ya da bir şey kullanarak) ya da Restler gibi bir API yardımıyla yapabilirim .

"Restler" bilmiyorum ve bu zaten bu yığın kapsam dışı.
"Wpdb, msqli veya başka bir şey kullanma" söz konusu olduğunda: wpdbVerileri veritabanına kaydetmek (almak) için kesinlikle kullanırsınız , ancak son nokta mantığıyla ilgili değildir.

Bir tema şablonu, bakmanız gereken şey değildir. Temalar görsel sunum içindir. Bir REST uç noktasının görsel bir görünüme ihtiyacı yoktur.

Bitiş noktasını, kısa kod ile kullanmak istediğiniz sayfaya ekleyin .

Var shortcode işleyici / geri arama ya dinlemek HTTP POST veya GET ve buna göre tasarruf veri veya diğer ikincil yöntemlerle çağırmak.


WordPress'i bir uç nokta / arka uç olarak kullanmak mantıklı mı?

Değişir.
Tek ihtiyacınız olan verileri kaydetmek için bir uç nokta ise: Hayır. Kullanarak sadece birkaç satır kod kaydetmek için tüm çekirdeği wpdbyüklemek buna değmez.
Bir web tarayıcısı aracılığıyla oturum açabilen, sekmeli verileri görüntüleyebilen, söz konusu verileri değiştirmenin yollarını sunabilen, hatta birden fazla erişim düzeyi / kullanıcı rolü ve hakkı olsa bile, bir arka uca ihtiyacınız varsa, evet, mantıklıdır.


3
Gerçekten iyi cevap +1.
gmazzap

2
Bunu ikiye katla. +1
kaiser

Gerçekten harika cevap için teşekkürler! Bundan dolayı, iki seçeneğim var: 1. kendi eklentimi yaz; 2. Ayrı bir hizmet yazın. Yapmam gereken son nokta birkaç GET parametresi alıp bir JSON gövdesi döndürmek olduğundan, kendi servisimi yazmam gerektiğini düşünüyorum çünkü "Kodun sadece birkaç satırını kaydetmek için tüm çekirdeği wpdbyüklemek buna değmez".
14:14

0

API Endpoints eklentisi, özellikle MySQL'i biliyorsanız, tüm ihtiyaçlarınızı karşılamalıdır. Aşağıdaki adımları uygularsınız:

  1. Yeni bir Twig Şablonu oluşturun, WordPress sitenizden veri almak için MysQL sorgunuzu girin ve verileri herhangi bir formatta çıkarmak için Twig sözdizimini kullanın. Örneğin, JSON.

  2. Yeni bir API uç noktası oluşturun, bir ad verin ve 1. adımda oluşturduğunuz Dal Şablonu'nu kullanacak şekilde yapılandırın.

Tamamlandığında, oluşturmak istediğiniz her uç nokta için 1. ve 2. adımları tekrarlayın. API Endpoints standart WordPress kimlik doğrulama sistemini kullanır, bu nedenle WordPress'inizde ayrı bir kullanıcı oluşturmak ve api uç noktalarınıza erişmek için kullanıcı adını / şifresini kullanmak en iyisidir.


API Endpoints, bir projem için ilginç görünüyor, ancak blogunuzda genel aboneliklere izin vermeyen oturum açmayı gerektirdiği için almak neredeyse imkansız olan Twig Anything gerektiriyor.
mettjus

Şimdi ücretsiz olmadığını fark ettim ...
mettjus

0

WP REST API'nin yeni sürümü Beta sürümündedir, ancak özel REST uç noktalarını kaydetme konusunda oldukça iyi belgelere sahiptir. Ayrıca, beta'nın olması veya sabit kalması garanti edilmediğinden, deneyeceğim, sürüm 1'de nasıl yapılabileceği hakkında çok küçük bir bulanıklık var. Daha sonra kaydettiğiniz yöntemlerden wpdb kullanabileceğinizi varsayalım. Aslında sadece ACF malzeme kullanarak ve açısalJS ile güzel, aranabilir / sıralanabilir çok özellikli dizin sayfası oluşturmak için benim php nesneleri içine prepossessing.

WWP REST API 1 ve 2 arasında dokümanlarından karşılaştırma

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.