Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Puxando API com Guzzle #207

Open
damiaojr91 opened this issue Jan 23, 2021 · 2 comments
Open

Puxando API com Guzzle #207

damiaojr91 opened this issue Jan 23, 2021 · 2 comments

Comments

@damiaojr91
Copy link

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!

@phmiranda
Copy link

@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.

@josemoraes
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants