Do zero ao deploy, meu primeiro projeto backend pt1
Ola, meu nome e Caio tenho 16 anos e queria compartilhar o meu "primeiro" projeto backend com você.Digo "primeiro" porque ja tenho um pequeno projeto onde uso como material de estudo.É la onde basicamente aplico muitos conceitos aleatorios do mundo .NET que posso usar futuramente.
Sobre o projeto
Quero criar uma API de mangas e animes, onde o consumidor pode filtrar, criar, editar, apagar e alem disso quero implementar um sistema de chatbox com signalR, lembrando que estou aberto a sugestões e críticas. Para começar quero definir alguns endpoints que quero implementar na minha API, estes são:
Endpoints/Rota | Corpo Request/Route | Cabeçalho Request | Response/StatusCode |
---|---|---|---|
/api/v1/Mangas GET | nenhum | string TokenJWT | Lista de Mangas 200, 404, 401 |
/api/v1/Manga/{id} GET | string id | string TokenJWT | Manga pelo id 200, 404, 401 |
/api/v1/Mangas/Tag?Tag=string GET | nenhum | string TokenJWT | mangas pela tag específica 200, 404, 401 |
/api/v1/Mangas/Tag GET | Tags | string TokenJWT | Mangas filtrados pelas Tags fornecidas 200, 404, 401 |
/api/v1/Manga/Page/{id}?pageID=int GET | string id | string TokenJWT | pagina de manga com o png 200, 404, 401 |
/api/v1/Manga POST | MangaViewModel | string TokenJWT | retorna o id do manga 201, 400, 401, 404 |
/api/v1/Manga/Page/{id} POST | string id, MangaPageViewModel | string TokenJWT | lista com id das paginas e pngs. 201, 404, 401 |
/api/v1/Manga/Search?search=string POST | nenhum | string TokenJWT | Mangas que possuem o mesmo nome que a query search 200, 204, 404, 401 |
/api/v1/Manga/{id} PUT | string id, MangaPutViewModel | string TokenJWT | Manga Modificado 200, 204, 404, 401 |
/api/v1/Manga/Page/{id} PUT | string id, MangaPagePutViewModel | string TokenJWT | Manga Pages modificado 200, 204, 404, 401 |
/api/v1/Manga/{id} PATCH | string id, MangaPatchViewModel | string TokenJWT | Atributos modificados do manga 200, 404, 401 |
/api/v1/Manga/Page/{id}?Page=int PATCH | string id, MangaPagePatchViewModel | string TokenJWT | Pagina modificada 200, 204, 404, 401 |
/api/v1/Manga/{id} DELETE | string id | string TokenJWT | mensagem de delete 200, 404, 401 |
/api/v1/Manga/Page/{id} DELETE | string id | string TokenJWT | mensagem de delete 200, 404, 401 |
São poucos endpoints, porem eles podem ser modificados, e caso eu modifique eles eu escrevo outro texto e publico aqui pra atualizar o estado do projeto.É um projeto bem simples e bobo, mas quero ir crescendo e adicionando tecnologias/novas implementações. Criticas sao muito bem-vindas, queria tambem deixar claro q as rotas de mangas tambem se aplicam as mesmas pra animes. Vou usar Asp Net pra fazer a API link do github do projeto(talvez esteja vazio pq vou criar o projeto agora :D ) link do repositorio.
Alguém com 16 anos e interessado em .NET?! hahahaha
Brincadeiras à parte, parabéns pela iniciativa, eu como entusiasta de mangás (e de .NET!) quero ver a parada funcionando!
PS.: Se for fazer deploy da API, detalha esse processo, pode ser interessante pra muita gente, também (eu, inclusive).
Vai atualizando nóis ae!
Muito legal que você está começando e aprendendo por projetos. Eu dei uma olhada no seu código e tem algumas coisas a melhorar. Não leve isso como criticismo, todo mundo que está aprendendo tem de começar de algum lugar e você está indo muito bem. Mas acho que posso te ajudar em alguns pontos:
-
As pastas bin e obj foram para o GitHub. Tanta fazer um commit apagando elas e cria um arquivo gitignore para evitar que eles sejam publicados novamente. Com o dotnet basta entrar na pasta do código fonte e rodar
dotnet new gitignore
. -
Para o deploy, aproveita que o dotnet possui uma ferramenta nativa para criar containers docker sem ter que escrever nenhum dockerfile. Aprenda como utilizá-la e como publicar uma imagem do seu app no dockerhub para baixar em qualquer servidor.
-
No deploy algumas coisas vão te encontrar. Então relaxe, Cors, redirect e companhia vão aparecer pra te assombrar mas descobrir como resolver só vai te tornar mais forte. Além de te fazer perder alguma sanidade e cabelos no processo. Mas é normal.
-
A estrutura do projeto está um pouco fora do padrão. Pelo que percebi você está criando uma estrutura próxima de DDD. É interessante estudar um pouco o que vai no que. Seus models estão no lugar certo, no domínio. Mas o datacontext e repositórios deveriam estar em uma camada de infraestrutura. Já o código dos controladores podem ser abistraidos na camada de aplicação. Não entendeu nada? Relaxa, tenta organizar de um jeito razoável para você e estuda DDD depois de fazer o projeto funcionar. Primeiro você faz funcionar, depois refatora.
-
Por último, quando finalizar seu projeto backend, tenta criar um front com Blazor para consumir sua API, tenta até integrar com o .Net aspire, é muito simples e muito legal para orquestrar todas as suas aplicações.
Vai fazendo isso aos poucos, tome o tempo necessário. Sim é bastante coisa. Mas acho que isso vai te dar uma ótima experiência e te tornar um grande programador.
Se tiver alguma dúvida pode comentar aqui que vou disponibilizar um tempo para te ajudar se eu puder. É um ótimo começo, continue firme!