Executando verificação de segurança...
7

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/RotaCorpo Request/RouteCabeçalho RequestResponse/StatusCode
/api/v1/Mangas GETnenhumstring TokenJWTLista de Mangas 200, 404, 401
/api/v1/Manga/{id} GETstring idstring TokenJWTManga pelo id 200, 404, 401
/api/v1/Mangas/Tag?Tag=string GETnenhumstring TokenJWTmangas pela tag específica 200, 404, 401
/api/v1/Mangas/Tag GETTagsstring TokenJWTMangas filtrados pelas Tags fornecidas 200, 404, 401
/api/v1/Manga/Page/{id}?pageID=int GETstring idstring TokenJWTpagina de manga com o png 200, 404, 401
/api/v1/Manga POSTMangaViewModelstring TokenJWTretorna o id do manga 201, 400, 401, 404
/api/v1/Manga/Page/{id} POSTstring id, MangaPageViewModelstring TokenJWTlista com id das paginas e pngs. 201, 404, 401
/api/v1/Manga/Search?search=string POSTnenhumstring TokenJWTMangas que possuem o mesmo nome que a query search 200, 204, 404, 401
/api/v1/Manga/{id} PUTstring id, MangaPutViewModelstring TokenJWTManga Modificado 200, 204, 404, 401
/api/v1/Manga/Page/{id} PUTstring id, MangaPagePutViewModelstring TokenJWTManga Pages modificado 200, 204, 404, 401
/api/v1/Manga/{id} PATCHstring id, MangaPatchViewModelstring TokenJWTAtributos modificados do manga 200, 404, 401
/api/v1/Manga/Page/{id}?Page=int PATCHstring id, MangaPagePatchViewModelstring TokenJWTPagina modificada 200, 204, 404, 401
/api/v1/Manga/{id} DELETEstring idstring TokenJWTmensagem de delete 200, 404, 401
/api/v1/Manga/Page/{id} DELETEstring idstring TokenJWTmensagem 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.

Carregando publicação patrocinada...
3

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!

0
1

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!

2

Vlw pelo seu comentario, vou aplicar tudo q me disse, ja me falaram isso do github sobre o gitignore e basicamente eu tinha esquecido disso mas vou arrumar ja ja.
Sobre a estrutura de pastas eu realmente nunca estudei nada disso, vi somente alguns videos.Vou estudar mais sobre DDD e tentar aplicar isso o quanto antes.
Sobre o docker, eu ja comecei o projeto no rider e habilitei o docker, ja tenho ele la na pasta root do projeto so nao sei como funciona pq vou deixar isso pro final ne, mas basicamente eu comento isso no meu outro texto sobre o começo do projeto que esta aqui.
Vou postar mais um texto ainda hj sobre o projeto então caso esteja interessado e so acessar.
Mt obg pelo seu comentario foi de grande ajuda pra mim!

1