Como enviar e receber JSON usando PHP + cURL

Precisando saber como enviar uma requisição POST com o conteúdo no formato JSON? Então você encontrou o POST certo, vamos explorar e aprender como enviar uma requisição POST utilizando PHP puro.

O que você vai aprender?

  • Enviar requisições POST contendo json usando PHP+cURL
  • Receber uma requisição contendo Json

Quais são os requisitos?

  • PHP moderno instalado (7.2+)
  • Uma API de sua Preferência (incluímos uma de exemplo bem legal)
  • Editor de texto

Enviando JSON

No exemplo abaixo vamos utilizar a função cURL nativa do PHP e chamar uma API de análise de sentimento. Para começar Vamos enviar uma frase “duvidosamente alegre/positiva” para testar a API.

O código está comentado e possuí algumas dicas confiram:

<?php



// URL de SUA API
$url = 'https://sentim-api.herokuapp.com/api/v1/';

// cria um resource cURL
$ch = curl_init($url);

// monte um array que conterá os campos a serem enviados
// Vamos neste tutorial optar por usar um array para montar os campos de post. Este é o campo de form-data.
// Nossa api específica espera um array em formato JSON com uma única chave "text" e seu respectivo conteúdo que será analisado.
$data = array(
    'text' => "For every minute you are angry you lose sixty seconds of happiness."
);

// vamos usar a função json encode para transformar nosso array em uma string Json válida
$corpo = json_encode($data);

// agora vamos anexar o corpo em formato json da sua requisição
curl_setopt($ch, CURLOPT_POSTFIELDS, $corpo);

// defina o conteúdo do envio como json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));

// ative o recebimento de retorno da requisição
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// executa a requisição POST
$resultado = curl_exec($ch);

// encerra conexão e libera variável
curl_close($ch);

// 1 - Aqui estamos usando json_decode para transformar nossa resposta JSON em um objeto PHP.
// 2- Em seguida usamos print_r passando o segundo parâmetro true para melhorar a legibilidade de objetos e arrays PHP
// 3 - Por fim a tag html <pre> melhora a formatação de código no navegador 
echo '<pre>'.print_r(json_decode($resultado),true).'</pre>';

?>

Recebendo JSON no PHP

Agora que já aprendemos como enviar JSON você vai ver que receber é ainda mais fácil. Basta utilizar a função file_get_contents, passando como parametro “php://input”, a partir daí qualquer requisição enviada para este arquivo php terá seu corpo capturado e exibido.

<?php

//Para capturar o corpo JSON
$json_convertido = json_decode(file_get_contents('php://input'), true);

//Exibindo os dados enviados para seu arquivo PHP
echo '<pre>'.print_r($json_convertido,true).'</pre>';

Recapitulando

E ai o que achou desta postagem, acredita que precisa melhorar em algo? Não entendeu alguma parte ou encontrou algum erro? Deixe um comentário.

Related posts

Leave a Comment