Criando uma API REST customizada

9

Eu tenho um site WordPress.org que recebe informações do usuário, pesquisa um banco de dados personalizado e exibe os resultados da consulta. Eu tenho esse trabalho usando a classe wpdb . Agora estou tentando fazer isso funcionar para um aplicativo Android.

Pelo que entendi, criar um servidor RESTful é a 'melhor prática' atual para esse tipo de coisa. Eu olhei em alguns plugins que poderiam me ajudar a fazer isso, e eu me deparei com:

  1. json-rest-api - Parece-me que isso só expõe o núcleo do WordPress funcionalidade (ou seja, posts, páginas, usuários, etc.) e não consigo ver como fazer isso para executar consultas personalizadas em tabelas não padrão.

  2. Esta postagem no blog diz que wp mvc faz exatamente o que eu quero, exceto que não foi atualizado em mais de 2 anos, então isso meio que descarta isso.

  3. Há também Jetpack mas pelo que eu vi, o json-rest-api é o atualizado versão deste e parece apenas dar funcionalidade central também.

Existe uma maneira de fazer com que algum desses plug-ins funcione para terminais personalizados? Ou existem outros plugins que ainda não encontrei?

Se eu não usar um plugin, acho que teria que fazer o meu próprio. Eu posso fazer isso do zero (usando wpdb , msqli ou algo assim) ou com a ajuda de uma API como Restler .

Se eu criar meu próprio, devo criar um modelo no meu tema, fazer o material REST lá e atribuir esse tema a uma página dentro do painel? Ou seria melhor ter outro servidor rodando separado no WordPress para isso?

Tanto quanto eu posso ver, estas são minhas únicas opções. Eu gostaria de saber quais são as melhores práticas recomendadas para esse tipo de coisa. Acho difícil acreditar que ninguém mais tenha feito isso. Há alguma opção que negligenciei?

    
por Yep_It's_Me 29.09.2014 / 10:14

3 respostas

12

TL; DR

Sim, o WordPress pode certamente funcionar como um back-end para um aplicativo para dispositivos móveis. Sim, uma página pode funcionar como um ponto de extremidade / interface de descanso. Não, um modelo de tema não é o território certo para a lógica. Escreva seu próprio plugin.

Ponteiros

  

Acho difícil acreditar que ninguém mais tenha feito isso.

Eu, por exemplo, tenho. Mais de uma vez. E estou perto de certeza de que não estou sozinha. "Ninguém tem extensivamente blogado sobre isso" é provavelmente a noção mais correta.

  

Se eu não usar um plugin, acho que teria que fazer o meu próprio. Eu posso fazer isso do zero (usando wpdb, msqli ou algo assim), ou com a ajuda de uma API como Restler . / p>

Eu não sei "Restler" e isso está fora do escopo desta pilha de qualquer maneira.
No que diz respeito a "using wpdb, msqli or something": Você certamente usaria wpdb para salvar dados (recebidos) no banco de dados, mas isso não é pertinente para a lógica do terminal.

Um modelo de tema não é o que você deve procurar. Os temas são destinados a apresentação visual. Um endpoint REST não precisa de aparência visual.

Insira o endpoint na página que você deseja usar para ele por meio de um shortcode .

Faça com que o manipulador de código de acesso / callback ouça HTTP POST ou GET e invoque a economia de dados ou outros métodos secundários de acordo.

Faz sentido usar o WordPress como um endpoint / backend?

Depende.
Se tudo que você precisa é um endpoint para salvar dados: Não. Carregar todo o núcleo apenas para salvar algumas linhas de código usando wpdb não vale a pena.
Se você precisa de um back-end que pode ser conectado através de um navegador, que pode exibir dados tabulares, oferecer maneiras de alterar esses dados, talvez com vários níveis de acesso / funções de usuário e direitos, então sim, faz sentido.

    
por Johannes Pille 29.09.2014 / 10:35
0
O plugin Endpoints da API deve cobrir todas as suas necessidades, especialmente se você estiver familiarizado com o MySQL. Você faria os seguintes passos:

  1. Crie um novo modelo Twig, insira sua consulta MysQL para buscar dados do seu site WordPress e use a sintaxe Twig para produzir os dados em qualquer formato. Por exemplo, JSON.

  2. Crie um novo ponto de extremidade da API, atribua um nome e configure-o para usar o Modelo de galho que você criou na etapa 1.

Uma vez feito, repita os passos 1 e 2 para cada endpoint que você gostaria de criar. Endpoints da API usam o sistema padrão de autenticação do WordPress, então seria melhor criar um usuário separado em seu WordPress e usar seu nome de usuário / senha para acessar seus endpoints da API.

    
por Meglio 07.08.2015 / 15:45
0

A nova versão da API REST do WP está em Beta, mas tem uma boa documentação sobre como registrar endpoints REST personalizados. Há também uma sinopse muito pequena sobre como isso poderia ser feito na versão 1, que eu vou experimentar, já que o beta não tem garantia de ficar estável. Eu suponho que você poderia usar o wpdb de dentro dos métodos que você registra. Na verdade, estou usando apenas o material ACF e prepossessing em objetos no meu php para criar uma página de índice agradável, pesquisável / classificável multi-propriedade com angularJS.

Comparação entre a API REST de WWP 1 e 2 de seus documentos

    
por Kyle Zimmer 02.03.2016 / 18:43