Consumo de APIs em .NET Core: utilizando APIs REST da NASA

Renato Groffe
4 min readSep 11, 2017

--

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:

Novidades do ASP.NET Core 2.0

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:

https://github.com/renatogroffe/ASPNETCore2_NASA-Open-APIs

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:

Conteúdos gratuitos sobre ASP.NET Core, .NET Core e C# 7.0

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

Responses (1)