Consumo de APIs em .NET Core: utilizando APIs REST da NASA
Este artigo tem por objetivo apresentar o projeto NASA Open APIs, um conjunto de APIs REST disponibilizadas gratuitamente pela Agência Espacial Norte-Americana. Além de imagens com informações astronômicas diárias, a NASA também conta com funcionalidades como a consulta a dados de asteroides em rota de aproximação da Terra e fotos de observações em Marte.
As próximas seções trazem um exemplo de utilização de uma destas APIs, considerando para isto a implementação de uma aplicação baseada no ASP.NET Core 2.0.
Caso queira mais referência sobre o consumo de APIs REST com .NET Core consulte o post a seguir, em que abordei este tipo de prática a partir do uso da Marvel Comics API:
Consumo de APIs em .NET Core: utilizando a Marvel Comics API
E como um dos assuntos deste post são APIs REST, deixo aqui um convite. No dia 28/09 (quinta) teremos mais uma apresentação online no Canal .NET a partir de 21h30 - horário de Brasília .
Desta vez contaremos com a presença do Lucas Massena apresentando os prós e contras das Arquiteturas de Microserviços, além de técnicas e dicas de como construir (ou não) uma aplicação com Microservices.
Para efetuar sua inscrição acesse a página do evento no Facebook ou então o Meetup, a transmissão será via YouTube em um link a ser divulgado futuramente.
NASA Open APIs: obtendo uma chave de acesso
Para conhecer mais sobre os recursos que a NASA disponibiliza via APIs REST acesse o link a seguir:
https://api.nasa.gov/index.html
Uma chave deverá ser gerada para consumo das informações existentes. Na próxima imagem está o formulário para requisição deste item de configuração:
OBSERVAÇÃO IMPORTANTE: há um limite máximo de 1000 requisições por hora ao se utilizar uma chave de acesso.
Implementando a aplicação para testes
Será criado um projeto do tipo ASP.NET Core Web Application chamado SiteDadosNASA:
Selecionar para isto o template Web Application, além das opções .NET Core e ASP.NET Core 2.0:
O template escolhido (Web Application) faz uso de Razor Pages, um novo tipo de estrutura baseado apenas em Views/Actions e que dispensa a implementação de Controllers. Caso deseje saber mais a respeito das novidades do ASP.NET Core 2.0 acesse este artigo:
Como próximo passo implementar a classe ImagemNASA, que conterá dados como o título, a descrição, o formato (figura ou vídeo) e a URL de uma imagem disponibilizada pela NASA:
A listagem a seguir traz o código que será executado ao acessar a View Index.cshtml (método OnGet da classe IndexModel):
- A chave e a URL para acesso às APIs da NASA estão declaradas no arquivo appSettings.json, sendo obtidas por meio da referência do tipo IConfiguration (namespace Microsoft.Extensions.Configuration);
- Para este exemplo específico será utilizada a API chamada APOD (Astronomy Picture of the Day), a qual retorna diariamente a URL e dados de uma imagem/vídeo em destaque. Esta funcionalidade permite ainda pesquisas retroativas, com o site de testes aqui descrito considerando os últimos 7 dias (a exibição de um dia acontecerá de forma randômica);
- Nota-se ainda o uso da classe HttpClient (namespace System.Net.Http), com a mesmo sendo empregada na comunicação com a API REST da NASA;
- Para o envio de uma requisição serão informados o valor da chave obtida junto à NASA (parâmetro api_key), além do dia-base para pesquisa (parâmetro date).
Já na próxima listagem está o código para a exibição de informações na View Index.cshtml (que inclui uma checagem, a fim de determinar se estará sendo exibida uma imagem ou vídeo):
Os fontes do projeto implementado nesta seção podem ser encontrados no GitHub:
Testes
As imagens a seguir mostram a aplicação SiteDadosNASA em execução. É possível observar 3 destas imagens disponibilizadas pela NASA, além de um quarto exemplo com um vídeo:
E para concluir, gostaria de mais referências gratuitas sobre ASP.NET Core e .NET Core? Acesse então o post a seguir, em que estão listados todos os artigos e vídeos que produzi sobre estas tecnologias: