forum
forum copied to clipboard
Puxando API com Guzzle
Boa tarde pessoal, tudo bem?
Estou trabalhando em um projeto que utiliza Laravel e Guzzle para puxar APIs, porém preciso exibir o resultado em forma de tabela mas não estou conseguindo... Sou iniciante em dev então ainda estou com bastante dificuldade em algumas coisas...
Eu fiz uma rota no PHP para apontar para a api: Obs: a palavra "linkapi" usei apenas para exemplificar um link qualquer de API
Route::get('/cliente', [HomeController::class, 'cliente'], function(){ $client = new Client([ // Base URI is used with relative requests 'base_uri' => 'https://linkapi', // You can set any number of default request options. 'timeout' => 2.0, ]);
Na blade que pretendo puxar os dados da API estou com a seguinte tabela e código, porém com certeza está errado pois não exibe nada dentro da tabela:
<main class="container mt-5">
<div class="row">
<div class="offset-3 col-6 starter-template py-5 px-3">
<table class="table">
<thead>
<tr>
<th scope="col">Nome</th>
<th scope="col">Sobrenome</th>
<th scope="col">E-mail</th>
<th scope="col">Investimento</th>
</tr>
</thead>
<tbody>
@foreach ($cliente as $data)
<tr>
//Cada linha dentro da tabela fiz um teste diferente, porém nenhum retorna nada...
<th scope="row">$response = $Client->get('https://linkapi');</th>
<td>$response = $Client->request('GET', 'last_name');</td>
<td>{{$data->email}}</td>
<td>{{$data->investimento}}</td>
@endforeach</tr>
</tbody>
Agradeço desde já pelo apoio!
@damiaojr91 eu também estou usando o Laravel para consumir uma API externa, mas no caso estou usando a versão 7 e ele já tem na documentação uma forma de usar o Gluzze. Talvez seria interessante dar uma olhada.
Boa tarde pessoal, tudo bem?
Estou trabalhando em um projeto que utiliza Laravel e Guzzle para puxar APIs, porém preciso exibir o resultado em forma de tabela mas não estou conseguindo... Sou iniciante em dev então ainda estou com bastante dificuldade em algumas coisas...
Eu fiz uma rota no PHP para apontar para a api: Obs: a palavra "linkapi" usei apenas para exemplificar um link qualquer de API
Route::get('/cliente', [HomeController::class, 'cliente'], function(){ $client = new Client([ // Base URI is used with relative requests 'base_uri' => 'https://linkapi', // You can set any number of default request options. 'timeout' => 2.0, ]);
Na blade que pretendo puxar os dados da API estou com a seguinte tabela e código, porém com certeza está errado pois não exibe nada dentro da tabela:
<main class="container mt-5"> <div class="row"> <div class="offset-3 col-6 starter-template py-5 px-3"> <table class="table"> <thead> <tr> <th scope="col">Nome</th> <th scope="col">Sobrenome</th> <th scope="col">E-mail</th> <th scope="col">Investimento</th> </tr> </thead> <tbody> @foreach ($cliente as $data) <tr> //Cada linha dentro da tabela fiz um teste diferente, porém nenhum retorna nada... <th scope="row">$response = $Client->get('https://linkapi');</th> <td>$response = $Client->request('GET', 'last_name');</td> <td>{{$data->email}}</td> <td>{{$data->investimento}}</td> @endforeach</tr> </tbody>
Agradeço desde já pelo apoio!
@damiaojr91 Quando tu faz uma requisição, precisa recuperar o body e os conteúdos dele. O Guzzle possui esses métodos disponíveis nesta seção aqui. Um exemplo seria:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://api.github.com/',
]);
$response = $client->request('GET', 'users/damiaojr91');
$content = $response->getBody()->getContents(); // Aqui está o conteúdo da resposta
Sobre o código que você apresentou acima, evite colocar regras de negócio na camada de visualização. Uma dica, seria criar uma classe de serviço para executar a requisição e tratar. E a model, serviria apenas para representar a entidade. Na controller você poderia chamar o serviço e retornar ao usuário se for o caso, ou usar como deseja. Pra te ajudar, recomendo a leitura desse guia de boas práticas com Laravel. Na verdade esse guia tem como base conceitos de código limpo que são universais. Bons estudos, e espero ter te ajudado \0