Pular para o conteúdo
Blog | NS Tecnologia
Menu
  • Início
  • NS Posts
  • Ebooks Gratuitos
  • Material de Apoio
  • Site
  • Certificado Digital
  • pt Português
    • en English
    • pt Português
    • es Español
Home > NS Posts > API > Como Comunicar com API Rest: Exemplo em PHP

Como Comunicar com API Rest: Exemplo em PHP

Publicado em 04/04/201807/10/2021 por Fábio

Comunicar com API é um processo muito simples, pois com apenas 03 parâmetros você realiza a comunicação. Criamos um exemplo prático com linguagem php para ilustrar essa comunicação.

Você precisa trocar informações com uma API e não sabe exatamente como estruturar esta comunicação? No artigo de hoje, você vai aprender sobre como comunicar com API, através de um método geral de comunicação, utilizando requisições do tipo HTTP POST e HTTP GET. A linguagem de desenvolvimento utilizada em nosso exemplo é o PHP. Confira a seguir!

<?php
 class Comunicacao {
 public function enviaConteudoParaAPI($cabecalho = array(), $conteudoAEnviar, $url, $tpRequisicao) {
 try{
 //Inicializa cURL para uma URL.
 $ch = curl_init($url);
 //Marca que vai enviar por POST(1=SIM), caso tpRequisicao seja igual a "POST"
 if ($tpRequisicao == 'POST') {
 curl_setopt($ch, CURLOPT_POST, 1);
 //Passa o conteúdo para o campo de envio por POST
 curl_setopt($ch, CURLOPT_POSTFIELDS, $conteudoAEnviar);
 }
 //Se foi passado como parâmetro, adiciona o cabeçalho à requisição
 if (!empty($cabecalho)) {
 curl_setopt($ch, CURLOPT_HTTPHEADER, $cabecalho);
 }
 //Marca que vai receber string
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 /*
 Caso você não receba retorno da API, pode estar com problema de SSL.
 Remova o comentário da linha abaixo para desabilitar a verificação.
 */
 //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 //Inicia a conexão
 $resposta = curl_exec($ch);
 //Fecha a conexão
 curl_close($ch);
 }catch(Exception $e){
 return $e->getMessage();
 }
 return $resposta;
 }
 }
?>

Introdução e estrutura da função

Para comunicar com API, de uma forma geral, você precisa fornecer sempre 3 informações para que a comunicação ocorra com sucesso: o conteúdo a ser enviado, a URL do serviço e o tipo de requisição (POST, GET, PUT ou DELETE). Além disso, você pode também colocar informações adicionais no cabeçalho (header) da requisição. Com base nesses parâmetros, criamos o método a seguir (dentro da classe comunicacao), que funciona como uma espécie de “meio-campo” entre a aplicação que fará o consumo do serviço e a API desejada:


Exemplo de utilização

Para exemplificar a utilização do método acima, vamos emitir uma NFCe através da NS NFCe API da NS Tecnologia. Para isso, criamos um pequeno arquivo .php para realizar o consumo da função enviaConteudoParaAPI, criada anteriormente e que irá comunicar com API. confira o arquivo a seguir:

<html>
 <head>
 <title>Método Geral Comunicação API - GET e POST</title>
 </head>
 <body>
 <?php
 //Faz o include da classe Comunicacao
 include 'comunicacao.php';
 //Cria um novo objeto da classe
 $Comunicacao = new Comunicacao;
 //Define os dados de cabeçalho da requisição
 $cabecalho = array(
 'Content-Type: application/json',
 'X-AUTH-TOKEN: @@@@@@@@@@@@@@@@@@@'
 );
 //Configura o conteúdo a ser enviado
 $conteudo = '{"NFe": { "infNFe":{ "versao":"3.10", "ide":{ "cUF":"43", "natOp":"VENDA", "indPag":"0", "mod":"65", "serie":"0", "nNF":"8636", "dhEmi":"2018-03-01T15:29:09-03:00", "tpNF":"1", "idDest":"1", "cMunFG":"4303509", "tpImp":"4", "tpEmis":"1", "tpAmb":"2", "finNFe":"1", "indFinal":"1", "indPres":"1", "procEmi":"0", "verProc":"1.0.0.0" }, "emit":{ "CNPJ":"07364617000135", "xNome":"NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL", "enderEmit":{ "xLgr":"AV ANTONIO DURO", "nro":"100", "xBairro":"CENTRO", "cMun":"4303509", "xMun":"CAMAQUA", "UF":"RS", "CEP":"96180000", "cPais":"1058", "xPais":"BRASIL" }, "IE":"0170108708", "CRT":"3" }, "det":[ { "nItem":1, "prod":{ "cProd":"2", "cEAN":"7897348203810", "xProd":"NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL", "NCM":"30023010", "CFOP":"5102", "uCom":"UN", "qCom":"1", "vUnCom":"132.00", "vProd":"132.00", "cEANTrib":"7897348203810", "uTrib":"UN", "qTrib":"1", "vUnTrib":"132.00", "indTot":"1" }, "imposto":{ "ICMS":{ "ICMS00":{ "orig":"0", "CST":"00", "modBC":"3", "vBC":"132.00", "pICMS":"18.00", "vICMS":"23.76" } }, "PIS":{ "PISAliq":{ "CST":"01", "vBC":"132.00", "pPIS":"0.00", "vPIS":"0.00" } }, "COFINS":{ "COFINSAliq":{ "CST":"01", "vBC":"132.00", "pCOFINS":"0.00", "vCOFINS":"0.00" } } } } ], "total":{ "ICMSTot":{ "vBC":"132.00", "vICMS":"23.76", "vBCST":"0.00", "vST":"0.00", "vProd":"132.00", "vFrete":"0.00", "vSeg":"0.00", "vDesc":"0.00", "vII":"0.00", "vIPI":"0.00", "vPIS":"0.00", "vCOFINS":"0.00", "vOutro":"0.00", "vNF":"132.00", "vICMSDeson":"0.00" } }, "transp":{ "modFrete":"9" }, "pag":{ "tPag":"01", "vPag":"132.00" }, "infAdic":{ "infCpl":"NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL" } } }}';
 //Define a URL para consumo do serviço
 $url = 'https://nfce.ns.eti.br/v1/nfce/issue';
 //Tipo de requisição: POST
 $tpRequisicao = 'POST';
 //Faz a chamada da função, passando os parâmetros
 $resposta = $Comunicacao->enviaConteudoParaAPI($cabecalho, $conteudo, $url, $tpRequisicao);
 //Exibe a resposta da API
 echo $resposta;
 ?>
 </body>
</html>

Confira a saída no browser:

comunicação com api - resposta da api no browser


Conclusão

Com a utilização do método acima, fizemos a emissão de uma NFCe através da API da NS Tecnologia. Com apenas 4 parâmetros (um deles, opcional), é possível consumir qualquer serviço API. Espero que este código tenha ajudado você a compreender um pouco mais sobre a comunicação com APIs em PHP. Qualquer dúvida, deixe seu comentário aqui abaixo, vai ser um prazer ajudá-lo (wink)

 
Assinatura blog marcelo redonda

Gostou do Post? Caso você não conheça nossa API entre em contato conosco! 

 

Compartilhe com um Dev:

  • Compartilhar no Facebook(abre em nova janela) Facebook
  • Compartilhar no LinkedIn(abre em nova janela) LinkedIn
  • Compartilhar no WhatsApp(abre em nova janela) WhatsApp

Curtir isso:

Curtir Carregando...

Relacionado

Postado em API

19 comentários em “Como Comunicar com API Rest: Exemplo em PHP”

  1. Rubens Nelson Santos Gonçalves 25/07/2018Responder

    Muito bom o conteúdo. Teste na versão php 7.1.20 e funcionou perfeitamente.
    Tenho duas sugestões para futuros posts, o primeiro sobre o código, se você chamou a classe Comunicacao no HTML, mas não colocou no include. A outra é para melhorar um pouco a parte comentada, a explicação em algumas linhas fica muito vaga.

    • Leonardo 31/07/2018Responder

      Olá Rubens, tudo bem?
      Ficamos muito felizes quando recebemos seu comentário, nós realmente amamos quando ajudamos alguém com nossos posts.
      Referente às suas sugestões, se você observar o include da classe comunicação foi feito logo após a abertura da tag

  2. Jhonatam Rezende 08/11/2018Responder

    Como o Rubens disse, nos exemplos acima não é mencionada a classe comunicação. ao testar aqui o código ficou incompleto. Mas seu post tem me ajudado bastante.

    • Leonardo 09/11/2018Responder

      Olá Jhonatam.
      Obrigado pelo seu comentário, ficamos mega felizes sempre que conseguimos auxiliar alguém.
      Apenas para esclarecer, se você observar, na linha a seguir, é chamado o método enviaConteudoParaAPI, da classe Comunicacao:

      $resposta = $Comunicaco->enviaConteudoParaAPI($cabecalho, $conteudo, $url, $tpRequisicao);

      Nesse caso, o método enviaConteudoParaAPI que foi colocado no post está dentro da classe Comunicacao.
      Muito obrigado pela sugestão, iremos adicionar uma informação destacando isto no post.
      Um grande abraço!

  3. Lucas 02/07/2019Responder

    Olá, muito bom este post… utilizei a explicação acima e deu certo, porém estou acessando um ambiente autenticado onde informo usar e pass e a url de autenticação me retorna um token, como faço agora pra navegar nas outras URLs do ambiente autenticado?

    • Leonardo 04/07/2019Responder

      Olá Lucas, tudo bem?
      Qual é o nome e o link desse ambiente autenticado a que você se refere?
      Grande abraço!

  4. Junior Freitas 18/02/2020Responder

    Bom dia Leonardo, tudo bem? Poderia publicar algo, ou se auxiliar como tu fez o modo noturno da página, na opção ‘Alterar Alto Contraste’, preciso fazer com react, mas sabendo como tu fez aqui, já é uma boa base.

    Obrigado meu amigo, ótimos conteúdos.

    • Leonardo 19/02/2020Responder

      Olá Júnior, tudo bem?
      Essa barra de acessibilidade foi inserida através do plugin Wp Accessibility para WordPress, que permite o alto contraste e também mudar o tamanho da fonte.
      Espero ter ajudado.
      Muito obrigado pelas palavras.
      Grande abraço!

  5. horacio 04/05/2020Responder

    Api, hoje em dia representa o futuro dos sistemas!! Onde trabalho, estamos integrando via api sistemas atraves de api, é muito bacana essa “tecnologia” , facilita muito o trabalho em geral do desenvolvedor…
    Não é tudo que faço com php, php eu uso para gerar as apis, normalmente a leitura das apis faço com jquery!!!
    Gostei bastante do seu artigo!!!
    Grande abraço!! até mais!!
    Ganhou um seguidor para seu site!!

    • Fabi Silva 20/05/2020Responder

      Obrigada Horacio por fazer parte dessa galera que ama tecnologia e está sempre em busca de evolução!
      Grande Abraço e continue conosco!

      Fabi Silva

  6. Jailson Braga Santos 25/03/2021Responder

    Boa noite, eu gostei muito do seu material, tenho uma dúvida, pois muitos vezes eu só vejo as postagens de como é enviada os parametros pela url, mais não mostram o recebimento desses mesmos no backend Api, será que vc poderia mostrar um trecho de codigo em um exemplo de Select All com parametros sort, e limit

    • Fábio Lucas Autor do post07/04/2021Responder

      Oi Jailson tudo bem?

      Nós só disponibiliza os endpoints e os layouts
      para que os parceiros possam enviar as requisições
      o backend de uma aplicação nunca fica exposto.
      O que são expostos são os endpoints

      grande abraço,
      Fábio

  7. Nathan Kurt 10/05/2021Responder

    Excelente, era o que eu precisava! Parabéns!

    • Fábio Lucas Autor do post12/05/2021Responder

      Bah que legal que te ajudamos Nathan. Abraço ai!

  8. ALLISSON JORGE SILVA ALMEIDA 16/07/2021Responder

    Olá, no meu caso especifico esta aparecendo a seguinte informação; Token de acesso invalido.

    • Fábio Lucas Autor do post21/07/2021Responder

      Opa Alisson tudo bem?
      Você pode não estar informando o token, ou informando de forma incorreta.
      É importante você verificar estas duas possibilidades.
      Qualquer dúvida estamos aqui!

  9. Ronaldo Luiz Carvalho 10/01/2023Responder

    Marcelo, utilizando seu exemplo consegui fazer acesso rapidamente em um ambiente de teste, mas não estou conseguindo recuperar os dados da URL abaixo, consegue me dar uma ajuda?

    curl –location -g –request GET ‘https://app-integracao.arboimoveis.com/api/imoveis?page=1&perPage=10&fields=[“ref_id”, “codigo”, “ativo”, “mobiliado”]&search={“mobiliado”: true}’
    –header ‘Authorization: ‘

    Não consigo o retorno.

    • NS Tecnologia 12/01/2023Responder

      Olá Ronaldo tudo bem?

      Tomei a liberdade de desativar o link por segurança.
      Sobre a sua dúvida….não conseguimos encontrar você em nossa base de clientes.
      Você é cliente nosso?

      Pergunto pois somente nossos clientes tem o token para acesso a nossa API, pelo nome da URL acredito que você não seja nosso cliente e tenha um desenvolvimento próprio?
      Se sim, você deve verificar com o time de desenvolvimento sobre este erro ou a empresa contratada.

      Fico à disposição para demais dúvidas, espero ter ajudado!

    • NS Tecnologia 12/01/2023Responder

      Ronaldo, esse link que você enviou precisa de login, a API não está pública?
      Talvez este seja o problema se você não tem o token de acesso.
      Infelizmente sem entender melhor não conseguimos te passar uma solução

Deixe um comentário Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

API da NS

Categorias

  • API (64)
    • MFe Ceará (2)
    • NS NFbe (1)
  • Arquivo TXT (5)
  • Atualizado (2)
  • BPe (13)
    • English contents (1)
  • C# (6)
  • CCe (1)
  • Certificado (16)
  • Depoimentos (2)
    • DEV (1)
  • DEV (3)
  • DIFAL (1)
  • E-mail (2)
  • GTVe (4)
  • Impressora (2)
  • Informativo (13)
    • Decreto (3)
  • Inscrição Estadual (1)
  • Integração (26)
  • laravel (1)
  • Manifestação do Destinatário (3)
  • NFSe (5)
  • NFSe Nacional (4)
  • Node.js (6)
  • Nota Fiscal Fácil (1)
  • Notas Técnicas (75)
  • NS BP-e (5)
  • NS Conversor (1)
  • NS CT-e (64)
    • ANTT (1)
  • NS CTe OS (15)
  • NS DDFe (6)
  • NS DF-e Portal (4)
  • NS MD-e (4)
  • NS MDF-e (44)
  • NS NF-e (217)
  • NS NF3e (11)
  • NS NFC-e (158)
  • NS NFCom (6)
  • NS NFP-e (6)
  • NS NFSe (2)
  • NS SAT (18)
  • NS Storage (4)
  • orientações (79)
  • php (2)
  • Podcasts (3)
  • Reforma Tributária (3)
  • Rejeições CT-e (9)
  • Rejeições MDF-e (25)
  • Rejeições NF-e (137)
  • Rejeições NF3e (15)
  • Rejeições NFC-e (53)
  • sat (2)
  • SAT Fiscal (6)
  • Sefaz (15)
    • Ajuste Sinief (1)
    • cBenef (2)
    • NFCom (4)
  • Sem categoria (53)
  • Suporte (18)
    • Rejeições (9)
  • Tecnologias (6)
  • Vídeos (30)
  • Visual Studio (2)

RSS Podcasts

  • #35 | Tipos de Logística
  • #34 | INTEGRANDO com a API de NFe em 3 MINUTOS
  • Emissão de BPe em Contingência
  • Episode #32 - Frente de Caixa (PDV): Utilizando NFCe Cloud com tratamento de Retornos de Contingência
  • Episode #31 - NFCom: Prepare sua empresa de Comunicação para este novo Documento Fiscal eletrônico



ns storage
Copyright © 2026 Blog | NS Tecnologia FameThemes
%d