Construyendo una API REST personalizada

9

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

Por lo que entiendo, la construcción de un servidor REST es la "mejor práctica" actual para este tipo de cosas. He investigado algunos complementos que podrían ayudarme a hacer esto, y he encontrado:

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

  2. Esta publicación del 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 lo descarta.

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

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

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

Si hago mi propio rollo, ¿debo crear una plantilla en mi tema, hacer el REST y asignar ese tema a una página dentro del panel de control? ¿O sería mejor tener otro servidor que se ejecute por separado a WordPress para esto?

Por lo que 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 cuesta creer que nadie más haya hecho esto. ¿Hay alguna opción que haya pasado por alto?

    
pregunta Yep_It's_Me 29.09.2014 - 10:14

3 respuestas

12

TL; DR

Sí, WordPress puede actuar como un servidor para una aplicación móvil. Sí, una página puede actuar como un extremo / interfaz de descanso. No, una plantilla de tema no es el territorio correcto para la lógica. Escribe tu propio complemento.

Punteros

  

Me cuesta 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 hecho muchos blogs al respecto" es probablemente la noción más correcta.

  

Si no uso un complemento, me imagino que tendría que hacer mi propio rollo. Puedo hacerlo 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": ciertamente usaría wpdb para guardar (recibir) datos en la base de datos, pero no es pertinente a la lógica del punto final.

Una plantilla de tema no es lo que deberías considerar. Los temas son para 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 usar a través de un código corto .

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

¿Tiene sentido utilizar WordPress como punto final / backend?

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

    
respondido por el Johannes Pille 29.09.2014 - 10:35
0

API Endpoints debe cubrir todas sus necesidades, especialmente si está familiarizado con MySQL. Harías los siguientes pasos:

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

  2. Cree un nuevo punto final de API, asígnele un nombre y configúrelo para usar la plantilla de 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 de API utilizan el sistema de autenticación de WordPress estándar, por lo que sería mejor crear un usuario separado en su WordPress y usar su nombre de usuario / contraseña para acceder a los puntos finales de la API.

    
respondido por el Meglio 07.08.2015 - 15:45
0

La nueva versión de WP REST API está en versión Beta, pero tiene bastante buena documentación sobre cómo registrar puntos finales REST personalizados. También hay una pequeña reseña 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 luego podría usar wpdb desde los métodos que registra. En realidad, solo uso material de ACF y lo prepago en objetos en mi php para crear una página de índice de múltiples propiedades agradable y fácil de buscar con angularJS.

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

    
respondido por el Kyle Zimmer 02.03.2016 - 18:43

Lea otras preguntas en las etiquetas