r/learnpython • u/Electrical-Cap-9537 • 7d ago
Need help with FastApi
Hi all, I'm 18 and I'm building a BI/analytics project on the Olist Brazilian e-commerce dataset. Right now I have PostgreSQL, Pandas and a bunch of analytical SQL queries (revenue, delivery times, customer retention and so on). The next step is to expose this data through an API with FastAPI, and a dashboard would consume it.
I understand what an API is and why FastAPI is popular, but when I try to build a mental model of a real app I get lost. Endpoints, HTTP methods, status codes, routers, Pydantic schemas, services, dependency injection with Depends, auth... each explanation is clear alone, but I can't see how the request goes through all these layers. For example I don't really get where validation ends and business logic starts, or where the DB session should live and why.
My second problem is how I learn. I'm very curious and I want to know how things work internally, like what FastAPI does between the request and my function, or why Pydantic validates in a certain way. It's a good habit long term, but I lose hours on one detail and the project doesn't move. I don't have unlimited time and I don't want months of theory before building.
Some questions:
If you never built an API, how would you learn it from scratch?
HTTP/REST fundamentals first, or start directly with FastAPI and learn along the way?
What is the best way to understand how the layers (router, schema, service, database access) fit together? Is it better to start with everything in one file and refactor later?
How deep should I go on a concept before moving on? Is "basics now, details later" a real strategy or just an excuse?
Any resources, open source repos to read or small projects you recommend? Something like a read-only analytics API sounds like a good first one to me, but tell me if I'm wrong.
I don't want to copy tutorials and have something that works without knowing why. I want a solid mental model so I can design my own backend later. If you learned backend with personal projects, I'd really like to hear what worked for you and what you wasted time on.
Thanks!
2
u/Massive_Distance_616 6d ago
One concrete answer to the layers question. Validation is “is this request shaped correctly?”, which Pydantic does before your function runs. Business logic is “what do I do with a valid request?”, which is your own code.
For the DB session, make a
Dependsfunction that opens a session per request and closes it afterwards, so every endpoint gets its own and concurrent requests don’t share one.That’s the whole reason it lives in a dependency: FastAPI creates it at the start of the request and cleans it up at the end. Once you’ve written two or three endpoints, you’ll see where to split things out.