-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bootstrap do projeto #2
Comments
Precisamos discutir o padrão pasta para poder iniciar |
O River enviou um link muito interessante na #1 issue. É muito parecido com o manage.py, seria pra gente fazer um desse pra rodar a aplicação |
fiz o bootstrap fastapi zerado e queria pedir a ajuda de vocês para os próximos passos que seriam:
tava com o tempo meio apertado pq tinha acabado de começar a faculdade, mais agora to com a rotina mais bem definida. |
Vou dar uma olhada até o final de semana. Legal joão |
Darei uma olhada, e palpito ok? |
@Riverfount beleza! por enquanto só as dependências estão instaladas acho que por agora é só puxar mais tarefas |
@joaoprocopio e @huogerac esse repo tem o mesmo propósito que o que temos aqui: https://github.com/vndmtrx/poetry-fastapi-container vale a pena acompanhar! |
@joaoprocopio e @huogerac vi esse documento que parece interessante para estudarmos em vistas a uma estrutura de projetos: https://devdocs.io/fastapi/tutorial/bigger-applications/index#an-example-file-structure |
A Netflix tem um repo de um serviço chamado Dispatch, é um monolito em FastAPI, e eu achei o código de altíssima qualidade, é uma estrutura que me brilhou os olhos. Deem uma olhada logo depois! https://github.com/netflix/dispatch FYI @Riverfount @huogerac |
@joaoprocopio e @huogerac acabei por desenhar um modelo, que adotaremos no desenvolvimento aqui na empresa, dêem uma olhada e palpitem. NO caso, esse projeto é uma API que terá mais de um recurso, no bom e velho estilo de monolito mesmo! |
1)a pasta api/player é um agrupador de contexto? E dentro de cada uma (que funciona como uma app do django) temos a estrutura model, serializer, endpoint e task? 2)
'service layer'**Uma coisa que organiza bem, deixa mais fácil criar testes e desacopla regras de negócio do código do framework (por isto não gosto de regras dentro das views e dos models no django). Se a ideia desta pasta for isto, perfeito! Geralmente esta camada não tem dependencia para o request, context e outras coisas do framework web, são mais puras possívels (a.k.a. DDD), É claro, podemos decidir depender dos models que é a lib de ORM. Na prática não acontece, mas se trocarmos o framework web, esta camada será pouca afetada! @Riverfount acredito que um bom exercício é tentar colocar mais coisas ai! celery, mas classes de serviço, mas "apps" @joaoprocopio e você, como acabaram organizando as coisas ai com fastapi? Valeu galera |
Oi @huogerac a ideia do A pasta de tests é para separar o código dos testes do código que vai para produção. Não precisaria ser tão específico em colocar cada camada testada em pastas separas, mas player, report e payment sim seriam pacotes python dentro do pacote tests e dentro desses pacotes módulos para testar cada parte do Resource. Eu estou pensando numa API, mais monolítica do que microsserviços, até porque se fossem microsserviçoes teríamos uma estrutura dessas para cada Resource, totalmente separada e desacoplada, fazendo uma comunicação entre si, mas eu particularmente acho isso mais complexo de gerenciar do que ter um pouco de acoplamento e tals. Mas, é só minha modesta opinião. |
Depois desse desenho, pq eu to implementando um projeto de API usando esse modelo, eu criei um novo pacote python, o |
Seria legal se você pudesse criar um cookiecutter desta organização com as funcionalidades que o dejavue tem:
Simples, mas da para ter uma ideia...note que no Djangão eu não implementei o criar usuário (está no plano), mas dá para quebrar galho com o admin ou com o manage.py! Já no minimalista, vai ter que ter uma apizinha de inserir user eu acho... |
V0.0.1
V0.0.2
V0.0.3
V0.0.4
The text was updated successfully, but these errors were encountered: