C# dotnet web API playground (muitos exemplos + implantação do Docker)

Contexto
Muitas vezes precisamos publicar microsserviços RESTful, bem documentados e implantados em contêineres Docker (Kubernetes, Google Cloud Run, plataformas Serverless etc.).
Este projeto de playground mostra muitos recursos que você pode reutilizar em seus projetos.
É um projeto ativo e provavelmente será atualizado com frequência.
O que este aplicativo faz?
- O aplicativo faz muitas coisas. Muitos pontos de extremidade da API Web são expostos quando você executa o projeto.
- Veja a documentação (página padrão quando o projeto é executado)
Pilha e principais tópicos do projeto
Sobre o autor e licença
- Erick é desenvolvedor e arquiteto de back-end sênior.
- Você pode entrar em contato com Erick pelo e-mail [email protected] ou Linkedin https://www.linkedin.com/in/seixaserick/
- Outros repositórios Github: https://github.com/seixaserick/
- Licença MIT (verifique LICENSE.txt para mais detalhes)
Como executar este projeto
Clonar o repositório
Se você já instalou o Git para Windows, execute os comandos abaixo:
git clone https://github.com/seixaserick/dotnet-webapi-playground
cd dotnet-webapi-playground
Como executar este projeto em contêineres Docker
Se você já instalou o Docker Desktop, basta seguir estas etapas abaixo
Criando uma imagem docker
Para criar uma imagem Docker, execute a linha de comando abaixo no prompt de comando do diretório do projeto:
docker build -t dotnet-webapi-playground -f Dockerfile .
Executando o aplicativo em um contêiner docker

Configure um servidor Redis no Docker se você não tiver uma instância do Redis
docker run --name redis -d -p 6379:6379 -e REDIS_PASSWORD=supersecretpassword --restart always redis:latest /bin/sh -c 'redis-server --appendonly yes --requirepass ${REDIS_PASSWORD}'
Para executar a imagem no contêiner Docker e interagir com ela, execute a linha de comando abaixo:
docker run -it -p 1977:80 --name=dotnet-webapi-playground --restart=always dotnet-webapi-playground

Aberto: http://localhost:1977/square/8 (sem https)
Para parar o contêiner, execute a linha de comando abaixo:
docker stop dotnet-webapi-playground
Para remover o contêiner (mesmo que esteja em execução), execute a linha de comando abaixo:
docker rm --force dotnet-webapi-playground
Como construir e executar sem Docker (Windows)
Após clonar o repositório você pode abrir o projeto com o Visual Studio. Construa ou apenas depure pressionando F5
.
Para compilar e executar no Windows (é necessário Visual Studio)
Abra o arquivo de solução dotnet-webapi-playground.sln
com seu Visual Studio e pressione F5
para executar o projeto!
Conclusões
- Swagger é um ótimo gerador de documentação
- C# WebApis são muito leves para rodar dentro de Docker Containers com menos de 256 MB de RAM
- Json Parse é feito por dotnet de uma forma fácil e leve
- Docker é uma ótima ferramenta para executar projetos rapidamente sem se preocupar com dependências e configurações.
- C# é muito semelhante a outras linguagens baseadas em ECMA (Java, Javascript etc.)
- Algoritmos de hash são apenas "unidirecionais". Você não pode recuperar a string de entrada de um determinado hash.
- Os códigos de resposta podem ser facilmente customizados na resposta da API (exemplo: HTTP 409 Conflict, HTTP 402 PaymentRequired etc.). Veja os códigos de resposta HTTP completos.
- Bons arquivos Markdown README.md podem ajudar outros desenvolvedores a entender, clonar, executar e testar projetos.
Desafio de lição de casa
- Crie um novo Modelo de Objeto na pasta Modelos e crie um novo endpoint de API (método HTTP GET) para fazer alguns cálculos e retornar esse novo objeto.
- Crie uma nova extensão de tipo de dados C# e use-a para manipular seus tipos de dados nativos. Exemplo: Crie uma
string extension
para fazer .ToBase64Encode()
, então você pode tentar inputString.ToBase64Encode();
em vez disso, abordagem de função. - Crie um novo endpoint POST API para receber algum objeto e fazer algo com ele, retornando um resultado.
- Tente implementar o cache distribuído do Redis em algum endpoint.