Consumir API com PHP

Leitura de dados de API com PHP
Voltar

Consumir API na prática

Consumo (acesso) em API, via JSON, através da linguagem PHP. A API HG Brasil informa a previsão do tempo. A própria API utiliza o IP do dispositivo requisitante, para retornar a previsão do tempo local.


Modo Estrutural
<?php $url = "https://api.hgbrasil.com/weather?key=651bb186&user_ip=remote"; $weather = json_decode(file_get_contents($url)); echo "Previsão do tempo ".$weather->results->city."<br>"; foreach($weather->results->forecast as $r2) { echo $r2->date." ".$r2->weekday; echo " Min: ".$r2->min."°C | Max: ".$r2->max."°C "; echo $r2->description." ".$r2->condition."<br>"; }
Modo Padronizado
index.php <?php /* API HG Cotações 1- No site oficial, criar conta, então chave de autenticação 2- Minha chave: Não use a mesma! 811ec71b (Ex: https://api.hgbrasil.com/finance/quotations?key=811ec71b)*/ require_once 'app/config/config.php'; require_once 'app/modules/hg-api.php'; $hg = new HG_API(HG_API_KEY); $dolar = $hg->dolar_quotation(); var_dump($dolar); echo("<br>".$dolar['buy']); if($hg->is_error() == false) { $variation = ($dolar['variation']<0) ? 'Variação negativa' : 'Variação positiva'; } ?> <h1>Cotação dolar</h1> <?php if($hg->is_error()==false): ?> <p>U$D: <?= $dolar['buy'] ?></p> <p><?= $variation."(".$dolar['variation'].")" ?></p> <?php else: ?> <p>Erro de serviço</p> <?php endif; ?> Pasta app Subpasta config config.php <?php define('HG_API_KEY','811ec71b'); ?> Subpasta modules hg-api.php <?php class HG_API { private $key = null; private $error = false; function __contruct($key = null) { if(!empty($key)) $this->key = $key; } function request($endpoint = '', $params = array()) { $uri = "https://api.hgbrasil.com/".$endpoint."?key=".$this->key."&format=json"; if(is_array($params)) { foreach($params as $key => $value) { if(empty($value)) continue; $uri .= $key . '=' . urlencode($value) . '&'; } $uri = substr($uri,0,-1); $response = @file_get_contents($uri); $this->error = false; return json_decode($response,true); } else { $this->error = true; return false; } } function is_error() { return $this->error; } function dolar_quotation() { $data = $this->request('finance/quotations'); if(!empty($data) && is_array($data['results']['currencies']['USD'])) { $this->error = false; return $data['results']['currencies']['USD']; } else { $this->error = true; return false; } } } ?>

Elaborado por Mateus Schwede
ubsocial.github.io