Implementação de um serviço Laravel para consumir a NewsAPI (API de notícias) utilizando o HTTP Client nativo do Laravel, conforme requisitos do teste técnico.
- Consulta de notícias por termo de busca
- Listagem de manchetes por país
- Filtragem de fontes por categoria e país
- Tratamento de erros e respostas padronizadas
- PHP 8.0+
- Composer
- Laravel 12.x
- Chave de API da NewsAPI (registre-se em newsapi.org)
git clone https://github.com/abreujean/api-http-client-laravel
cd api-http-client-laravel
composer install
cp .env.example .env
php artisan key:generateAdicione sua chave da NewsAPI no arquivo .env:
NEWS_API_KEY=sua_chave_aquiGET /api/news/search
Parâmetros:
q: Termo de busca (obrigatório)pageSize: Quantidade de resultados (padrão: 10)
Exemplo:
http://localhost:8000/api/news/search/bitcoins/10GET /api/news/top-headlines
Parâmetros:
country: Código do país (2 letras, obrigatório)pageSize: Quantidade de resultados (padrão: 10)
Exemplo:
http://localhost:8000/api/news/top-headlines/us/10GET /api/news/sources
Parâmetros:
category: Categoria de notícias (obrigatório)country: Código do país (2 letras, obrigatório)
Exemplo:
http://localhost:8000/api/news/sources/technology/us- Utilize o Postman para testar os endpoints:
app/
├── Http/
│ ├── Controllers/
│ │ └── NewsController.php
├── Services/
│ └── NewsService.php
config/
routes/
├── api.php
- Credenciais armazenadas no arquivo
.env(nunca commitado) - Chave de API injetada via variáveis de ambiente
- Validação de parâmetros em todas as requisições
A API retorna respostas padronizadas:
{
"success": false,
"error": "Mensagem de erro detalhada"
}Códigos de status HTTP:
- 200: Sucesso
- 400: Parâmetros inválidos
- 502: Erro na comunicação com a NewsAPI
- Documentação da NewsAPI: newsapi.org/docs
- Documentação do HTTP Client do Laravel: laravel.com/docs/http-client
Jean Abreu [email protected]