https://github.com/danilocdev/learning_csharp_webapi
api crud para post criada com c#/.net core e mongodb/docker
https://github.com/danilocdev/learning_csharp_webapi
csharp dotnet mongodb webapi-core
Last synced: about 1 month ago
JSON representation
api crud para post criada com c#/.net core e mongodb/docker
- Host: GitHub
- URL: https://github.com/danilocdev/learning_csharp_webapi
- Owner: DaniloCDev
- Created: 2025-01-15T20:07:24.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-20T15:44:05.000Z (over 1 year ago)
- Last Synced: 2025-03-20T22:36:07.331Z (about 1 year ago)
- Topics: csharp, dotnet, mongodb, webapi-core
- Language: C#
- Homepage:
- Size: 11.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# README - API CRUD de Posts
## Descrição do Projeto
Este é um projeto de uma API CRUD (Create, Read, Update, Delete) para gerenciamento de posts, construído utilizando C# e .NET Core. O projeto foi desenvolvido com o objetivo de aprender os conceitos e fundamentos das tecnologias envolvidas, como desenvolvimento de APIs RESTful, integração com MongoDB,Docker e boas práticas de programação. ( deixo bem claro que tudo aqui foi apenas para aprendizado não sou nenhum profissional ou algo assim, estou aprendendo e com este projeto aprendi o basico para saber oque e aonde aplicar )!.
A API permite realizar as seguintes operações:
- **GET /api/Post**: Recupera todos os posts.
- **POST /api/Post**: Cria um novo post.
- **GET /api/Post/{id}**: Recupera um post específico pelo ID.
- **PUT /api/Post/{id}**: Atualiza um post existente.
- **DELETE /api/Post/{id}**: Deleta um post pelo ID.
O armazenamento dos posts é feito no **MongoDB**, um banco de dados NoSQL. A API é estruturada de forma a ser facilmente escalável, modular e bem documentada.
---
## Tecnologias Utilizadas
- **C#**: Linguagem de programação utilizada para desenvolver a API, focando em aprendizado de boas práticas de programação orientada a objetos e construção de APIs.
- **.NET Core**: Framework utilizado para o desenvolvimento da API. A escolha do .NET Core foi motivada pelo seu desempenho, flexibilidade e suporte à criação de APIs robustas e eficientes.
- **MongoDB**: Banco de dados NoSQL utilizado para armazenar os posts. Escolhido pela flexibilidade de seu modelo de dados e facilidade de integração com o .NET Core.
- **Swagger**: Ferramenta para documentação da API, gerando uma interface gráfica para fácil interação com os endpoints da API. A documentação gerada está disponível na URL `/swagger/v1/swagger.json` e permite testar a API diretamente através de um navegador.
- **Docker**: Utilizado para empacotar a aplicação e suas dependências em containers. O uso do Docker facilita a criação de ambientes de desenvolvimento e produção consistentes, além de melhorar a portabilidade e escalabilidade da aplicação.
---
## Como rodar o projeto
### Pré-requisitos
Antes de rodar o projeto, você precisará ter as seguintes ferramentas instaladas:
- **.NET SDK** (versão 6 ou superior)
- **MongoDB** (local ou na nuvem)
- **Docker** (opcional, mas recomendado)
### Instruções para execução
1. **Clonar o repositório:**
Clone este repositório para sua máquina local:
```bash
git clone https://github.com/DaniloCDev/learning_csharp_webapi.git
```
2. **Configurar o MongoDB:**
Certifique-se de que o MongoDB está rodando localmente ou que você tenha uma instância na nuvem. Se estiver utilizando o MongoDB localmente, o padrão da URL de conexão será algo como `mongodb://localhost:27017`.
3. **Configuração de Docker (opcional):**
Se preferir rodar a aplicação em um container Docker, você pode utilizar o arquivo `Dockerfile` presente no projeto. Basta executar o seguinte comando na raiz do projeto:
```bash
docker build -t nome-da-imagem .
docker run -p 5000:80 nome-da-imagem
```
A aplicação ficará disponível no endereço `http://localhost:5000`.
4. **Executar a API:**
Se não for utilizar Docker, pode executar a aplicação diretamente com o comando:
```bash
dotnet run
```
A API estará disponível em `http://localhost:5000`.
---
## Endpoints da API
Abaixo estão os principais endpoints da API e seus detalhes:
### 1. **GET /api/Post**
Recupera todos os posts armazenados no MongoDB.
**Resposta:**
```json
[
{
"id": "7bd1bdd9-6da7-4715-82b6-c8ab88834b9c",
"title": "teste swagger",
"content": "Conteúdo do post 2",
"createdAt": "2025-01-20T15:32:29.4229195Z"
},
{
"id": "7bd1bdd9-6da7-4715-82b6-c8ab88834b9d",
"title": "Outro post",
"content": "Conteúdo de outro post",
"createdAt": "2025-01-19T15:32:29.4229195Z"
}
]
```
### 2. **POST /api/Post**
Cria um novo post. Envie um objeto JSON no corpo da requisição com os campos `title` e `content` para criar o post.
**Corpo da requisição:**
```json
{
"title": "Meu novo post 2",
"content": "Conteúdo do post 2"
}
```
**Resposta:**
```json
{
"id": "7bd1bdd9-6da7-4715-82b6-c8ab88834b9c",
"title": "Meu novo post 2",
"content": "Conteúdo do post 2",
"createdAt": "2025-01-20T15:32:29.4229195Z"
}
```
### 3. **GET /api/Post/{id}**
Recupera um post específico pelo ID.
**Exemplo de URL:**
```
GET /api/Post/7bd1bdd9-6da7-4715-82b6-c8ab88834b9c
```
**Resposta:**
```json
{
"id": "7bd1bdd9-6da7-4715-82b6-c8ab88834b9c",
"title": "Meu novo post 2",
"content": "Conteúdo do post 2",
"createdAt": "2025-01-20T15:32:29.4229195Z"
}
```
### 4. **PUT /api/Post/{id}**
Atualiza um post existente. Envie um objeto JSON com os campos `title` e `content`.
**Exemplo de URL:**
```
PUT /api/Post/7bd1bdd9-6da7-4715-82b6-c8ab88834b9c
```
**Corpo da requisição:**
```json
{
"title": "Título atualizado",
"content": "Conteúdo do post atualizado"
}
```
**Resposta:**
```json
{
"id": "7bd1bdd9-6da7-4715-82b6-c8ab88834b9c",
"title": "Título atualizado",
"content": "Conteúdo do post atualizado",
"createdAt": "2025-01-20T15:32:29.4229195Z"
}
```
### 5. **DELETE /api/Post/{id}**
Deleta um post pelo ID.
**Exemplo de URL:**
```
DELETE /api/Post/7bd1bdd9-6da7-4715-82b6-c8ab88834b9c
```
**Resposta:**
```json
{
"message": "Post deletado com sucesso"
}
```
---
## Aprendizados
### Docker
Durante o desenvolvimento desta API, foi possível aprender sobre a utilização do **Docker** para containerizar aplicações. O Docker permite criar ambientes isolados, garantindo que a aplicação rode da mesma forma em diferentes máquinas, o que facilita o desenvolvimento, testes e deploy. A utilização do Docker foi fundamental para garantir que a API, junto ao MongoDB, fosse facilmente configurada e executada em diferentes ambientes, sem a preocupação com dependências locais.
### C# e .NET
A escolha do **C#** e do **.NET Core** para este projeto foi essencial para aprender sobre o desenvolvimento de APIs com uma linguagem robusta e moderna. Com o .NET Core, pude explorar a criação de rotas, manipulação de requests e responses, e integração com o MongoDB de forma simples e eficiente. O .NET Core também forneceu ferramentas úteis como o Entity Framework e a facilidade de documentação automática com o Swagger, que contribuiu bastante para o aprendizado.
### MongoDB
O uso do **MongoDB** ajudou a entender a diferença entre bancos de dados relacionais e NoSQL, além de proporcionar uma maneira rápida e eficiente de armazenar dados de forma flexível. A integração do MongoDB com o .NET foi feita através de pacotes de NuGet, e com isso pude aprender a realizar operações básicas de CRUD (Create, Read, Update, Delete) diretamente com o banco de dados.
---
## Conclusão
Este projeto foi uma excelente oportunidade de aprendizado, abordando desde a criação de uma API RESTful até a implementação de práticas como o uso de Docker e integração com MongoDB. A experiência proporcionou uma compreensão profunda das tecnologias utilizadas e de como elas se complementam para criar uma aplicação escalável, eficiente e de fácil manutenção.