A intenção deste artigo é agrupar os diferentes conteúdos (artigos, vídeos, slides, posts) que venho produzindo sobre a implementação de APIs REST com o ASP.NET Core.
Continuarei mantendo em paralelo listagens similares, nas quais vocês poderão encontrar materiais que vão desde o .NET Core 1.0 e o ASP.NET Core 1.0, além das versões mais recentes da linguagem C# (7.0, 7.1, etc):
- Conteúdos gratuitos sobre ASP.NET Core, .NET Core e C# 7.0
- Conteúdos gratuitos sobre .NET Core 2.0 e ASP.NET Core 2.0
Autenticação com JWT (JSON Web Tokens)
O uso de JSON Web Tokens (JWT) não é exclusivo da plataforma .NET, já que este padrão aberto conta também com grande aceitação entre desenvolvedores de outras plataformas.
No artigo a seguir demonstro a utilização de JWT como mecanismo de autenticação em APIs criadas com o ASP.NET Core 2.0:
Documentando APIs REST com o Swagger
O Swagger é uma solução que simplifica o processo de documentação de APIs REST, possibilitando inclusive a geração de um site com a descrição dos diferentes recursos disponibilizados por uma aplicação Web. Este mesmo site disponibiliza ainda funcionalidades para a execução de testes com as APIs documentadas.
O artigo a seguir demonstra o uso desta tecnologia em uma API criada com o ASP.NET Core 1.1:
O exemplo deste artigo foi também convertido para o ASP.NET Core 2.0:
Utilizando Docker
O suporte a Docker foi outra das grandes novidades trazidas pelo ASP.NET Core. Os artigos a seguir demonstram a implementação e deployment de APIs REST, utilizando para isto containers Docker:
- ASP.NET Core: APIs REST na nuvem com Docker e Azure Web App
- ASP.NET Core 2.0: publicando no Docker Hub a partir do VS 2017
Acesso a dados relacionais
Além do ADO.NET, temos a opção de implementar APIs em ASP.NET Core empregando o Entity Framework Core e o Dapper (este último, um framework com extensões baseadas no ADO.NET, sendo muito utilizado em situações que exigem uma maior performance em relação a ORMs convencionais como Entity e NHibernate).
O repositório a seguir conta com os projetos ExemploADO e ExemploEFCore, os quais constituem exemplos de uso do ADO.NET e do Entity Framework Core em APIs criadas com o ASP.NET Core 2.0:
Já nestes dois artigos, você encontrará diversos exemplos de utilização do Dapper em APIs REST:
- Dapper: exemplos em .NET Core 2.0 e ASP.NET Core 2.0
- Dapper + .NET Core 2.0: exemplos utilizando PostgreSQL e MySQL
Utilizando NoSQL
Soluções NoSQL como MongoDB, Redis e DocumentDB contam com o suporte do .NET Core, o que viabiliza o uso destas tecnologias em APIs REST multiplataforma construídas com o ASP.NET Core. O artigo a seguir traz exemplos de implementação baseados na versão 2.0:
Consumindo APIs REST
No .NET Core temos a classe HttpClient (namespace System.Net.Http), a qual possibilita a comunicação com APIs REST desenvolvidas nas mais diferentes plataformas.
Os dois artigos a seguir trazem exemplos de utilização do tipo HttpClient, consumindo para isto APIs disponibilizadas gratuitamente pela Marvel Comics e a NASA (Agência Espacial Norte-Americana):
- Consumo de APIs em .NET Core: utilizando a Marvel Comics API
- Consumo de APIs em .NET Core: utilizando APIs REST da NASA
Implementando aplicações ASP.NET Core em Linux
No artigo a seguir foi demonstrada a implementação de uma API REST em Linux, utilizando para isto, o Visual Studio Code e o ASP.NET Core 1.1 (a única diferença em relação à versão 2.0 está no fato de que ao criar um novo projeto, as dependências deste são automaticamente restauradas):
Abordei também a implementação de aplicações ASP.NET Core em Linux em um Live Demo do Canal .NET, empregando para isto o .NET CLI (Command-Line Interface) e o Visual Studio Code:
Compressão
O ASP.NET Core conta com um middleware para a compressão de respostas em APIs REST, fazendo uso para isto do padrão GZIP. A vantagem deste tipo de prática está na diminuição do volume de dados trafegados entre o servidor que processará uma requisição e aplicações-cliente.
No artigo a seguir demonstrei o uso deste recurso em uma API criada com o ASP.NET Core 1.1:
Este mesmo exemplo também foi convertido para o ASP.NET Core 2.0 e está no seguinte repositório (projeto ExemploCompressao):