IMPORTANT NOTICE: This repository has been archived and moved to the official AstroVista organization on GitHub.
New Organization: https://github.com/AstroVista
Please go to the new repository for the latest version, to submit issues, or to contribute to the project.
API para gerenciar dados da NASA APOD (Astronomy Picture of the Day) com recursos avançados de documentação interativa, sistema de cache e suporte a múltiplos idiomas.
- Documentação interativa com Swagger/OpenAPI
- Sistema de cache com Redis para melhor performance
- Internacionalização (i18n) com suporte a múltiplos idiomas - Inglês (padrão)
- Português do Brasil
- Espanhol
- Francês
- Alemão
- Italiano
- Suporte para adicionar novos idiomas facilmente
- Go 1.18 ou superior
- MongoDB (para armazenamento de dados)
- Redis (opcional, para cache)
PORT
- Porta do servidor (padrão: 8081)MONGODB_URI
- URI de conexão com o MongoDBREDIS_URL
- URL do servidor Redis (opcional)REDIS_PASSWORD
- Senha do Redis (opcional)GOOGLE_TRANSLATE_API_KEY
- Chave da API do Google Translate (opcional)DEEPL_API_KEY
- Chave da API DeepL para traduções (opcional)
A API pode utilizar diferentes serviços de tradução:
Para usar o Google Translate, você precisa:
- Criar uma conta no Google Cloud Platform
- Criar um novo projeto
- Ativar a Cloud Translation API
- Criar uma chave de API
- Definir a variável de ambiente
GOOGLE_TRANSLATE_API_KEY
export GOOGLE_TRANSLATE_API_KEY="sua-chave-aqui"
Para usar o DeepL, você precisa:
- Criar uma conta no DeepL API
- Obter sua chave de autenticação
- Definir a variável de ambiente
DEEPL_API_KEY
export DEEPL_API_KEY="sua-chave-aqui"
Se nenhuma chave de API for configurada, a API usará um serviço de tradução simulado para desenvolvimento.
Para melhorar a performance e evitar requisições repetidas às APIs de tradução, implementamos um sistema de cache em dois níveis:
- Cache em memória: Armazena traduções recentes na memória para acesso rápido
- Cache Redis: Se o Redis estiver disponível, as traduções também são armazenadas de forma persistente
As traduções são armazenadas por 30 dias no cache Redis, reduzindo significativamente o número de chamadas às APIs externas.
# Clone o repositório
git clone https://github.com/seu-usuario/astrovista-api.git
cd astrovista-api
# Instale as dependências
go get -u
# Execute a API
go run main.go
/swagger/
- Documentação interativa Swagger
GET /apod
- Obtém o APOD mais recenteGET /apod/{date}
- Obtém um APOD por data específicaGET /apods
- Lista todos os APODs cadastradosGET /apods/search
- Pesquisa avançada com filtrosGET /apods/date-range
- Busca APODs por intervalo de datasGET /languages
- Lista idiomas suportadosPOST /apod
- Adiciona um novo APOD
Para obter respostas em um idioma específico, você pode:
-
Enviar o cabeçalho
Accept-Language
na requisiçãoAccept-Language: pt-BR
-
Ou adicionar o parâmetro
lang
na URL/apod?lang=pt-BR
As respostas da API incluem o cabeçalho X-Cache
para indicar se o resultado veio do cache:
X-Cache: HIT
- Resposta recuperada do cacheX-Cache: MISS
- Resposta obtida do banco de dados
MIT
This repository was archived on June 10, 2025, and moved to the official AstroVista organization on GitHub to centralize development and improve collaboration among contributors. All issues, pull requests, and discussions should be directed to the new repository.
No new contributions will be accepted in this repository.