Em preparação, pensei em dar uma olhada em como HTTP funciona, em geral, e como você pode usar as funções nativas do WordPress para trabalhar com ele, abrindo seus produtos para integração com Twitter, Facebook, Mailchimp e todos os tipos de outras ferramentas.
Neste artigo – parte 1 de 2 – mostrarei a você o básico dos pedidos HTTP, como eles estão estruturados, as informações que eles contêm e como dar sentido a eles. Na parte 2 vamos colocar nosso conhecimento em prática – através do WordPress.
O que é HTTP
HTTP é o principal protocolo utilizado na web hoje em dia, ele representa o Hypertext Transfer Protocol e é responsável por lhe mostrar HTML, imagens e muito mais. Clientes HTTP – como seu navegador – enviam solicitações para servidores HTTP que enviam de volta uma resposta.
Por exemplo, se você apontar seu navegador para Kinsta.com você está enviando uma solicitação para os servidores da Kinsta. O servidor lê seu pedido, descobre o que você precisa (falaremos sobre como isto acontece em breve) e envia de volta uma resposta que contém o código HTML para a página. Seu navegador lê a resposta e apresenta o código HTML para você na tela.
Noções básicas de solicitação HTTP
Qualquer transação entre um cliente e um servidor começa com uma solicitação HTTP. Às duas partes mais importantes de uma solicitação são o nome do método e a URL do recurso solicitado. Vamos começar com esta última.
Recursos
Um recurso é um pedaço de dado que pode ser identificado com uma URL. Por exemplo: http://myblog.com/my-awesome-article
provavelmente retornará um arquivo HTML – o código necessário para renderizar seu artigo fantástico.
Nomes dos métodos
Os nomes dos métodos identificam o tipo de ação que você deseja realizar no recurso. O navegador quase sempre usa GET que indica que você gostaria de recuperar o recurso.
Outros métodos incluem o POST para criar novos itens, PUT para atualizar itens, DELETE para apagar itens e HEAD para obter informações de cabeçalho.
Estes nomes de métodos, juntamente com URLs, fornecem a base das APIs REST. Você poderia enviar uma solicitação de obtenção para /article/4
para recuperar o artigo 4. Você também poderia enviar uma solicitação PUT junto com alguns dados para modificá-la, ou uma solicitação DELETE para removê-la.
A estrutura do HTTP
As solicitações e respostas HTTP são muito semelhantes de um ponto de vista estrutural. Cada uma delas tem quatro partes distintas:
- Uma linha inicial que é diferente para o pedido e a resposta
- Cabeçalhos opcionais que contêm informações sobre a solicitação ou resposta
- Uma linha em branco
- Conteúdo opcional do corpo
1. A linha inicial
Para solicitações, a linha inicial contém três informações: o nome do método, o caminho do recurso e a versão HTTP utilizada. Veja como pode parecer:
GET /users/4 HTTP/1.1
Note que esta linha contém o caminho relativo local e não a URL completa. A URL base é enviada em um cabeçalho (o cabeçalho Host), vamos dar uma olhada nos cabeçalhos em breve.
As respostas também contêm três pedaços de informação: a versão HTTP, o código de status e um motivo que descreve o código de status.
HTTP/1.1 302 Moved Temporarily
Para uma lista de todos os códigos de status e um pouco sobre cada um deles, dê uma olhada na Especificação de Códigos de Status HTTP, está tudo muito claro lá.
2. Cabeçalhos
Os cabeçalhos são essencialmente pares de informações nominativas e nominativas. O cabeçalho Host
mencionado anteriormente é um bom exemplo, na verdade, é o único cabeçalho necessário no HTTP 1.1. Os cabeçalhos lhe dão mais controle e mais informações.
O cabeçalho Accept
permite especificar o tipo de conteúdo que você permitirá em uma solicitação. O cabeçalho Accept-Language
permite que você controle o idioma do conteúdo que você está disposto a aceitar. Ambos são formas de negociação de conteúdo.
O cabeçalho Authorization
é um cabeçalho que você usará muito quando trabalhar com APIs para acessar ações somente de autorização como excluir um Tweet ou acessar sua conta de usuário.
3. Corpo
O corpo é onde o recurso é devolvido, ou onde mais explicações podem ser dadas caso você tiver encontrado um erro. Você pode usar seu idioma de escolha para ler os dados do corpo e exibi-los, ou usá-los internamente para lidar com erros.
Usando HTTP
Descobri que a compreensão do HTTP foi de grande ajuda na negociação da documentação para APIs de terceiros. O que complica o uso do HTTP é que você normalmente o utiliza dentro de uma linguagem de programação, o que significa que você precisa estar familiarizado com a forma como essa linguagem implementa o HTTP, bem como com o próprio HTTP.
Uma vez feito o pedido, você precisará ler a resposta, saber que informações obter dela, talvez até mesmo executar a resposta através de algumas funções para convertê-la no formato que você precisa. Uma vez que você tenha essa informação, poderá exibi-la, salvá-la em um banco de dados ou manipulá-la de outra forma.
O HTTP não é difícil, mas as tarefas que você deve realizar além de fazer/receber um pedido podem se acumular muito rapidamente, mascarando a simplicidade do HTTP em um manto de complexidade. Além disso, muitas APIs exigirão que você se autentique, o que acrescenta outra camada sobre tudo isso.
cURL
cURL é uma forma de interagir com HTTP, mas é bastante complexa. Ele pode ser usado a partir do terminal, mas o PHP também tem suporte a cURL. Para obter o conteúdo de uma URL, você poderia usar o seguinte no terminal.
curl https://kinsta.com
O problema é que o uso do cURL no terminal pode ser um, mas complexo. Para visualizar somente as informações de cabeçalho, você precisaria usar o seguinte formulário:
curl -s -D - http://danielpataki.com -o /dev/null
Você pode ver uma lista de todos os parâmetros, mas é provável que você esteja usando cURL em seu aplicativo web, então vamos ver cURL em PHP, aqui está como obter o conteúdo da mesma página:
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
Isto ainda é um pouco desajeitado, mas usando o Guia PHP você pode descobrir o que é o quê.
Usando WordPress
cURL é ótimo, mas adicionar cabeçalhos e lidar com informações retornadas não é tão fácil como você pode estar acostumado caso você trabalha com classes e funções PHP bem codificadas. Felizmente, o WordPress nos tem coberto com sua API HTTP. Vamos examiná-la em detalhes no próximo artigo, por enquanto, aqui está um exemplo da função nativa do WordPress, incluindo a adição de cabeçalhos:
$request = wp_remote_get('https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=kinsta, array(
'headers' => array(
'Authorization' => 'Bearer ' . $token,
),
));
Resumo
HTTP é a base de tudo o que fazemos na web e saber o que acontece em uma solicitação e uma resposta nos dá grandes capacidades de solução de problemas e nos permite controlar melhor nossos aplicativos.
Ao aprender o básico do HTTP, você poderá utilizar as APIs externas mais rápido e melhor, sabendo exatamente o que fazer com as informações dadas a você nos guias das APIs.
No próximo artigo da série, examinaremos como você pode lidar com dados HTTP com o WordPress e como você pode conectar o WordPress com um serviço de terceiros muito facilmente.
Deixe um comentário