Primeiro de tudo, eu entendo que este é um plugin no momento atual, mas certamente é quase parte do WordPress de qualquer maneira. Então, espero que isso não seja sinalizado como fora de tópico.
Eu li seus documentos oficiais, muitos outros artigos e assisti a vídeos tutoriais, mas ainda não estou conseguindo alguns pontos. Esse é certamente o futuro do WordPress, é muito útil para o desenvolvimento de aplicativos móveis e o uso / compartilhamento de dados entre sites diferentes, mas: o que ele faz apenas no meu site?
Considere isto:
Atualmente, estou trabalhando nos comentários. Quero que a seção de comentários seja carregada apenas quando o usuário rolar para a seção de comentários (com deslocamento de -200px, para que não haja atraso) .
- Vou acionar uma chamada ajax quando o usuário rola para esse ponto
- Chamada Ajax envia alguns dados com ele, como
post_id
etc - Executar
WP_Comment_Query()
no servidor - Enviar
JSON
dados de volta ao cliente com relações de comentários, nomes, conteúdo, etc. - Use JavaScript
document.createElement()
,innerHTML
etc para criar e comentários de saída
Agora .. Por que eu usaria a API REST? Qual é a utilidade para mim? Apenas à prova de futuro?
Eu ainda precisaria usar JavaScript para a saída de todos os dados que recebo .. Eu não encontrou qualquer bons artigos por isso ou por aquilo que eu deveria usar API REST (exceto a transferência de dados entre sites e developement aplicativo móvel) ..
WP_Comment_Query()
2. Construa uma matriz de comentários, cada uma com uma matriz de parâmetros nowhile
loop 3.json_encode()
4.echo
dados codificados de volta. Tudo isso emwp_ajax
e / ouwp_ajax_nopriv
função.Respostas:
No seu estado atual, é um recurso mal projetado que não tem nenhuma vantagem real para um desenvolvedor competente.
A idéia básica, no momento em que esta resposta é escrita, é expor a funcionalidade principal do WordPress como API JSON REST. Isso permitirá dissociar a lógica de "negócios" do WordPress da interface do usuário e criar diferentes interfaces de usuário completas ou parciais para gerenciar e extrair informações do wordpress. Isso por si só não é uma revolução, mas uma evolução. apenas uma substituição da API XML-RPC que, por si só, simplifica o HTTP com base na API de envio.
Como em qualquer evolução, a cada passo que você se pergunta, que vantagem você obtém do estado anterior, e a resposta provavelmente é "não muito", mas espero que os passos se acumulem com uma grande diferença.
Então, por que o prefácio negativo para esta resposta? Porque minha experiência como desenvolvedor de software é que raramente é possível criar uma API genérica que seja realmente útil sem ter casos de uso concretos para responder. Um caso de uso concreto aqui pode substituir a API XML-RPC para gerenciamento automatizado de wordpress, mas qualquer front end relacionado deve ser específico do site e, uma vez que há uma enorme penalidade de desempenho para cada solicitação enviada do cliente para o servidor, você não pode apenas uso agregado de API diferente para obter o resultado desejado de uma maneira que os usuários continuem satisfeitos. Isso significa que, para o front end, para uso não trivial, ainda haverá muito pouca diferença no esforço de desenvolvimento entre o uso da rota AJAX e da rota REST-API.
fonte
As duas vantagens gerais são:
Em relação ao seu exemplo especificamente,
Substitua as etapas 3 e 4 pela API REST e substitua as etapas 1, 2 e 5 pelo Backbone.js. BOOM, aplicativo dinâmico da web. Ou talvez você esteja mais à vontade executando o roteamento complexo necessário para o seu site com Python.
fonte
Bem, algumas coisas, na verdade.
Permite executar funções específicas conforme necessário, em vez de exigir todo o cálculo de um carregamento de página inteiro. Portanto, você pode atualizar os comentários periodicamente com sobrecarga razoavelmente baixa sem precisar de uma atualização da página, apenas chamando o terminal da API e atualizando os dados em sua página. Esse conceito acabará sendo extrapolado para SPAs (aplicativos de página única) que carregam o site "cliente" rapidamente uma vez e emula todas as "alterações" da página sem a necessidade de puxar novamente o HTML da página. Isso já é muito popular com o advento de estruturas como Angular, Ember e React. Os sites podem responder com uma velocidade incrível, ao mesmo tempo em que descarregam uma parte da energia computacional para o usuário final (ciclo de renderização, lógica não comercial) e reduzem significativamente o número geral de chamadas para o servidor (apenas extraem os dados necessários,
Ele separa a lógica de negócios e o renderizador. Sim, você pode usar a API com outro site PHP divulgando os resultados ou manipulá-la com Javascript como você mencionou, mas também pode consumi-la com um aplicativo móvel nativo, um aplicativo de desktop, etc. Não apenas isso, mas você pode ter todos conversando com a mesma API, que executa consistentemente a mesma lógica de negócios, o que, por sua vez, cria consistência e confiabilidade nos vários clientes que consomem a API.
As APIs são boas porque separam as preocupações da lógica e da exibição.
fonte
A API REST do WordPress é a nova novidade. Com aplicativos orientados a js de página única, e o WordPress deseja tornar-se uma plataforma de aplicativos, isso faz muito sentido. O plano é substituir o XML-RPC pela API REST (que é uma coisa boa apenas por razões de segurança!)
https://make.wordpress.org/core/2015/09/21/wp-rest-api-merge-proposal/
É outro conjunto de ferramentas para levar o WordPress adiante. E, embora tenha sido uma jornada sinuosa para chegar aonde estamos, acho que vale a pena dedicar um tempo para explorar e entender.
fonte
Primeiras coisas primeiro - o REST é leve
Em uma linha - Quando usamos APIs REST, fazemos toda a renderização de dados no lado do cliente (loops, condições e chamadas do servidor etc.) economizando largura de banda e, ao mesmo tempo, nosso aplicativo fica pronto para qualquer plataforma móvel, integrações de terceiros e modularizado ( preocupação entre o frontend e o servidor).
Você não quer isso?
fonte
Além dos 2 grandes pontos mencionados pelo @Milo, eu uso especificamente a API REST para expor meus dados a aplicativos que não são do WordPress. Temos uma extensão do Chrome que extrai informações de nosso banco de dados do WordPress, e isso é alcançado atingindo os pontos de extremidade da API REST com solicitações POST.
fonte
Infraestrutura CONSISTENTE
A API REST é consistente e legível por humanos. É auto-documentado.
GET wp-json/wp/v2/posts
é bem claro o que faz. SãoGET
algumas postagens.Você tem um espaço para nome:,
wp
uma versão:v2
e uma coleção de objetosposts
Você consegue adivinhar o que:
GET wp-json/wp/v2/posts/5
faz? Que tal:GET wp-json/wp/v2/posts/5/comments
Que tal:GET wp-json/shop/v2/orders/345/lines/11/price
Um desenvolvedor pode adivinhar facilmente, olhando para isso, ele receberá o preço da linha
11
,345
mesmo sem ler a documentação. O desenvolvedor pode facilmente dizer que é proveniente doshop
plug-in, pois está no namespace.Que tal
POST /wp-json/v2/posts title=New Blog Post
Que talPUT /wp-json/v2/posts title=New Title
Isso é bem claro também. Faz um novo post. A propósito, ele retorna o ID da nova postagem. Não se trata de AJAX OU da API REST. AJAX é simplesmente uma tecnologia que acessa a API REST. Considerando que, antes, você teria que vir para cima com um monte de nomes de função ajax abstratos como:
get_price_for_lineitem( $order, $line )
. Isso retornará apenas um número ou um objeto JSON? Não tenho certeza, onde está a documentação. Oh ... foi a chamada do ajaxget_order_line_price
ouget_lineitem_price
.O desenvolvedor não precisa tomar essas decisões, porque a
wp-json
API existente fornece um bom modelo básico a ser seguido ao criar seus próprios pontos de extremidade. Certamente, um desenvolvedor de plug-in ou API pode violar essas regras, mas, em geral, é mais fácil seguir um padrão já definido e a maioria dos desenvolvedores prefere seguir um padrão já definido (veja como os padrões difusos do jQuery são agora).ABSTRACÇÃO sem distração
Eu me preocupo com como
POST /wp-json/mysite/v1/widgets title=Foobar
funciona? Não. Eu só quero criar um novoWidget
e quero o ID em troca. Quero fazê-lo a partir de um formulário no meu front end sem atualizar a página. Se eu fizer uma solicitação para um URL, não me importo se é PHP, C #, ASP.NET ou qualquer outra tecnologia. Eu só quero criar um novo widget.A API REST desacopla o back-end da frente. Tecnicamente, se sua API for boa o suficiente, você poderá alterar toda a pilha de back-end. Enquanto você mantivesse a mesma estrutura da API REST, qualquer coisa que dependesse da API não seria afetada.
Se a sua API REST é simples e consistente o suficiente, usando um substantivo como
Widgets
uma coleção de objetos e um substantivo / identificadorWidget/2
para indicar uma única entidade, é muito simples escrever essa API em uma tecnologia muito diferente, pois é um encanamento de banco de dados mais ou menos básico código.Usa verbos de solicitação HTTP padrão.
As APIs REST aproveitam o núcleo de como a Web funciona e os VERBs (leia-se: ação) que você usa para mapear as funções CRUD de dados padrão.
Existem mais verbos HTTP, mas esses são os básicos. Cada solicitação pela Internet usa esses verbos. Uma API REST fica bem no topo do modelo em que a Web é criada mediante solicitações. Não há necessidade de qualquer camada de comunicação ou modelo de abstração no meio. É apenas uma solicitação HTTP padrão para um URL e retorna uma resposta. Você não pode ficar muito mais simples que isso.
Essencialmente, ele torna o desenvolvedor mais ciente dos detalhes de como a Web realmente funciona e, quando você se aproxima do entendimento de como os protocolos subjacentes funcionam, acaba criando um produto melhor, mais eficiente.
fonte