Crear una API REST personalizada


10

Tengo un sitio de WordPress.org que toma la entrada del usuario, busca en una base de datos personalizada y muestra los resultados de la consulta. Tengo esto trabajando usando la clase wpdb . Ahora estoy tratando de hacer que esto funcione para una aplicación de Android.

Por lo que entiendo, construir un servidor RESTful es la 'mejor práctica' actual para este tipo de cosas. He buscado algunos complementos que podrían ayudarme a hacer esto, y he encontrado:

  1. json-rest-api : me parece que esto solo expone la funcionalidad principal de WordPress (es decir, publicaciones, páginas, usuarios, etc.) y no puedo ver cómo hacer que esto ejecute consultas personalizadas en tablas no predeterminadas.

  2. Esta publicación de blog dice que wp mvc hace exactamente lo que quiero, excepto que no se ha actualizado en más de 2 años, por lo que eso descarta un poco.

  3. También hay Jetpack, pero por lo que he visto, la json-rest-api es la versión actualizada de esto y parece que solo proporciona funcionalidad básica.

¿Hay alguna manera de hacer que alguno de estos complementos funcione para puntos finales personalizados? ¿O hay otros complementos que aún no he encontrado?

Si no uso un complemento, me imagino que tendría que rodar el mío. Puedo hacer esto desde cero (usando wpdb, msqlio algo así), o con la ayuda de una API como Restler .

Si hago mi propio rollo, ¿debería crear una plantilla en mi tema, hacer las cosas REST allí y asignar ese tema a una página dentro del tablero? ¿O sería mejor tener otro servidor que se ejecute por separado para WordPress para esto?

Hasta donde puedo ver, estas son mis únicas opciones. Me gustaría saber cuáles son las mejores prácticas recomendadas para este tipo de cosas. Me resulta difícil creer que nadie más haya hecho esto. ¿Hay alguna opción que haya pasado por alto?


¿Con qué terminaste yendo? Estoy tratando de crear rutas / puntos finales personalizados para la wp rest api y 1) la documentación es terrible 2) no hay ejemplos en la web. ¡Hazme saber qué ruta tomaste, por favor!
Jacksonkr

1
Decidí crear mi propia API fuera de Wordpress, pero eso tiene acceso a la misma base de datos. Sin embargo, nunca lo logré, ya que este era solo un proyecto paralelo y he estado demasiado ocupado con otras cosas: P. Si yo fuera usted, echaría un vistazo a los frameworks Symfony2 o Laravel . Son realmente rápidos y fáciles de poner en marcha algo.
Sip_It's_Me

Respuestas:


15

TL; DR

Sí, WordPress ciertamente puede actuar como un back-end para una aplicación móvil. Sí, una página puede actuar como punto final / interfaz de descanso. No, una plantilla de tema no es el territorio adecuado para la lógica. Escribe tu propio complemento.


Punteros

Me resulta difícil creer que nadie más haya hecho esto.

Yo, por mi parte, tengo. Mas de una vez. Y estoy casi seguro de que no estoy solo. "Nadie ha blogueado extensamente al respecto" es probablemente la noción más correcta.

Si no uso un complemento, me imagino que tendría que rodar el mío. Puedo hacer esto desde cero (usando wpdb, msqli o algo), o con la ayuda de una API como Restler .

No sé "Restler" y eso está fuera de alcance en esta pila de todos modos.
En lo que respecta a "usar wpdb, msqli o algo así": sin duda lo usaría wpdbpara guardar datos (recibidos) en la base de datos, pero no es pertinente para la lógica del punto final.

Una plantilla de tema no es lo que debe mirar. Los temas están destinados a la presentación visual. Un punto final REST no necesita una apariencia visual en absoluto.

Inserte el punto final en la página que desea utilizar a través de un código corto .

Haga que el controlador de shortcode / devolución de llamada escuche HTTP POST o GET e invoque el almacenamiento de datos u otros métodos secundarios en consecuencia.


¿Tiene sentido usar WordPress como punto final / backend?

Depende.
Si todo lo que necesita es un punto final para guardar datos: No. wpdbNo vale la pena cargar todo el núcleo solo para guardar algunas líneas de código .
Si necesita un backend que se puede iniciar sesión a través de un navegador web, que puede mostrar datos tabulares, ofrecer formas de alterar dichos datos, tal vez incluso con múltiples niveles de acceso / roles y derechos de usuario, entonces sí, tiene sentido.


3
Muy buena respuesta +1.
gmazzap

2
Dobla eso. +1
kaiser

Gracias por la gran respuesta! Entonces, a partir de eso, las dos opciones que tengo son: 1. escribir mi propio complemento; 2. escribir un servicio por separado. Dado que todo lo que necesito que haga el punto final es tomar algunos parámetros GET y devolver un cuerpo JSON, creo que debería escribir mi propio servicio porque " wpdbNo vale la pena cargar el núcleo completo solo para guardar algunas líneas de código ".
Sip_It's_Me

0

El complemento API Endpoints debería cubrir todas sus necesidades, especialmente si está familiarizado con MySQL. Seguirías los siguientes pasos:

  1. Cree una nueva plantilla Twig, ingrese su consulta MysQL para obtener datos de su sitio de WordPress y use la sintaxis Twig para generar los datos en cualquier formato. Por ejemplo, JSON.

  2. Cree un nuevo punto final API, asígnele un nombre y configúrelo para usar la Plantilla Twig que creó en el paso 1.

Una vez hecho esto, repita los pasos 1 y 2 para cada punto final que desee crear. Los puntos finales API utilizan el sistema de autenticación estándar de WordPress, por lo que sería mejor crear un usuario separado en su WordPress y usar su nombre de usuario / contraseña para acceder a sus puntos finales api.


API Endpoints parece interesante para un proyecto mío, pero requiere Twig Anything, que es casi imposible de obtener, ya que requiere iniciar sesión en su blog que no permite suscripciones públicas.
mettjus

Ahora me di cuenta de que no es gratis ...
mettjus

0

La nueva versión de WP REST API está en Beta, pero tiene bastante buena documentación sobre cómo registrar puntos finales REST personalizados. También hay una pequeña propaganda sobre cómo se podría hacer en la versión 1, que voy a probar ya que no se garantiza que la versión beta sea estable. Supongo que podría usar wpdb desde los métodos que registra. En realidad, solo estoy usando cosas de ACF y las prepongo en objetos en mi php para crear una página de índice de múltiples propiedades agradable, buscable / clasificable con angularJS.

Comparación entre WWP REST API 1 y 2 de sus documentos

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.