Construindo uma API REST customizada


10

Eu tenho um site WordPress.org que recebe a entrada 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 em um aplicativo Android.

Pelo que entendi, a criação de um servidor RESTful é a 'melhor prática' atual para esse tipo de coisa. Analisei alguns plugins que poderiam me ajudar a fazer isso e me deparei com:

  1. json-rest-api - Parece-me que isso apenas expõe a funcionalidade principal do WordPress (ou seja, postagens, 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 do blog diz que o wp mvc faz exatamente o que eu quero, exceto que não é atualizado há mais de 2 anos, então isso meio que exclui isso.

  3. Também existe o Jetpack, mas pelo que vi, o json-rest-api é a versão atualizada disso e parece fornecer apenas as principais funcionalidades.

Existe uma maneira de fazer qualquer um desses plugins funcionar para pontos de extremidade personalizados? Ou existem outros plugins que ainda não encontrei?

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

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

Tanto quanto posso ver, essas são minhas únicas opções. 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. Existem opções que eu tenha esquecido?


Com o que você acabou indo? Estou tentando criar rotas / pontos de extremidade personalizados para o wp rest api e 1) a documentação é péssima 2) existem zero exemplos na web. Deixe-me saber qual rota você seguiu, por favor!
Jacksonkr

11
Decidi continuar construindo minha própria API fora do Wordpress, mas que tenha acesso ao mesmo banco de dados. Eu nunca cheguei a pensar nisso, já que este era apenas um projeto paralelo e eu estive muito ocupado com outras coisas: P. Se eu fosse você, daria uma olhada nos frameworks symfony2 ou laravel . Eles são realmente rápidos e fáceis de colocar em funcionamento.
Yep_It's_Me

Respostas:


15

TL; DR

Sim, o WordPress certamente pode funcionar como um back-end para um aplicativo móvel. Sim, uma página pode atuar como um terminal / interface restante. 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 tenho quase certeza de que não estou sozinha. "Ninguém escreveu extensivamente sobre o blog" é provavelmente a noção mais correta.

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

Eu não sei "Restler" e isso está fora do escopo nesta pilha de qualquer maneira.
No que diz respeito a "usar wpdb, msqli ou algo assim": você certamente usaria wpdbpara salvar dados (recebidos) no banco de dados, mas isso não é pertinente à lógica do nó de extremidade.

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

Insira o terminal na página que você deseja usar por meio de um código de acesso .

Faça com que o manipulador de shortcode / retorno de chamada ouça HTTP POST ou GET e invoque o salvamento de dados ou outros métodos secundários de acordo.


Faz sentido usar o WordPress como um ponto final / back-end?

Depende.
Se tudo o que você precisa é de um terminal para salvar dados: Não. Carregar o núcleo inteiro apenas para salvar algumas linhas de código usando wpdbnão vale a pena.
Se você precisar de um back-end que possa fazer login por meio de um navegador da Web, que possa exibir dados tabulares, ofereça maneiras de alterar os dados, talvez mesmo com vários níveis de acesso / funções e direitos de usuário, então sim, isso faz sentido.


3
Resposta realmente boa +1.
gmazzap

2
Dobrar isso. +1
kaiser

Obrigado pela resposta realmente ótima! Então, a partir disso, as duas opções que tenho são: 1. escrever meu próprio plugin; 2. escreva um serviço separado. Como tudo que eu preciso que o nó de extremidade faça é pegar alguns parâmetros GET e retornar um corpo JSON, acho que devo escrever meu próprio serviço porque " wpdbNão vale a pena carregar o núcleo inteiro apenas para salvar algumas linhas de código usando ".
Yep_It's_Me

0

O plug-in API Endpoints 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 gerar os dados em qualquer formato. Por exemplo, JSON.

  2. Crie um novo terminal de API, atribua um nome e configure-o para usar o Twig Template que você criou na etapa 1.

Depois de concluído, repita as etapas 1 e 2 para cada nó de extremidade que você deseja criar. Os pontos de extremidade da API usam o sistema de autenticação padrão do WordPress, portanto, seria melhor criar um usuário separado no seu WordPress e usar seu nome de usuário / senha para acessar seus pontos de extremidade da API.


O API Endpoints parece interessante para um projeto meu, mas requer Twig Anything, que é quase impossível de obter, pois requer login no seu blog, o que não permite inscrições públicas.
mettjus 13/09/2015

Agora eu percebi que não é livre ...
mettjus

0

A nova versão da API WP REST está na versão beta, mas possui uma documentação bastante boa sobre como registrar pontos de extremidade REST personalizados. Há também um pequeno resumo sobre como isso poderia ser feito na versão 1, que vou experimentar, já que o beta não é garantido ou permanece estável. Presumo que você possa usar o wpdb de dentro dos métodos registrados. Na verdade, estou apenas usando coisas do ACF e apropriando-as de objetos no meu php para criar uma página de índice de várias propriedades agradável, pesquisável / classificável com angularJS.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.