💡 Get my FREE 7-step guide to help you consistently design great software: arjancodes.com/designguide.
@lorenczhuka5 ай бұрын
Hello, got the error "can't reach this page" when trying to download the guide from the email. Any suggestion?
@donjohnson6063 Жыл бұрын
fastapi + pydantic is a ultimate pleasure to work with.
@yomajo Жыл бұрын
*In the sphere of virgin pleasures
@aflous11 ай бұрын
+SQLModel
@priyesbamne9112 Жыл бұрын
Need more of these full length tutorials ❤️
@MalcolmJones-bossjones Жыл бұрын
Agreed !
@lungenbrötchen Жыл бұрын
20 minutes is a sweetspot
@ArjanCodes Жыл бұрын
On it!
@yyfyyf6829 Жыл бұрын
@@ArjanCodes Thanks for your work! Really love those!
@ritwikgopi Жыл бұрын
One of the other major point about fast api is that it is built to support async out of the box. So if you have blocking IO calls inside your API logic(db calls, file system interaction, other API calls etc), using async will improve your performance even more. In simple terms usually when 1 thread of python server will handle 1 API request. With async it would be able to serve more requests. One major thing is that, make sure to use async specific db library, requests module, file io modules etc. Then only we will have this advantage
@bilbo1337 Жыл бұрын
Just make sure your DB setup is also async, otherwise you're actually making things worse if you use async endpoints with a synchronous DB call.
@lawrencedoliveiro9104 Жыл бұрын
I have created worker threads to turn blocking calls into non-blocking.
@TangoFoxtrotWhiskey Жыл бұрын
I'm a big fan of FastAPI. Thanks for doing this.
@ArjanCodes Жыл бұрын
You’re welcome Tom - glad you liked it!
@yates_ Жыл бұрын
I would also love to see videos about the best ways to deploy such an application, how to scale it, etc.
@_DRMR_ Жыл бұрын
Last year we ported our extensive Tornado based application to FastAPI. It was quite a learning experience. FastAPI really forced us to re-think some of our original customizations, but we ended up having full feature parity. Unfortunately we never managed to get it into production as the company eventually had to fold. You didn't even get to go into some of the neat tricks like Depends()! Future video? ;)
@_DRMR_ Жыл бұрын
Oh, and a nice trick with Pydantic models is that you can define separate Create/Update/Retrieve types. Then in your FastAPI route you can define a `response_model` that can help you filter results. Say your endpoint accepts certain data, but you only want to return some other data (instead of the exact same object, sometimes needed for enhanced security).
@obsidiansiriusblackheart Жыл бұрын
How robust is FastAPI? could this handle thousands of transactions a second, for example? I'd like to work with something that can handle ~500k individual transactions a day (with max db hits being ~5k a second), and this looks pretty good :)
@thesupercoach Жыл бұрын
@@obsidiansiriusblackheart There's no real way to know. It's going to depend on a number of factors including: the speed of the DB, the speed of the systems running the (API, DB) processes, the complexity of the API functions, any potential latency if the DB is remote, the list goes on. Almost anything will work if you throw enough processes at it or tune it correctly, it really depends on how much you want it to work. You're not going to get C++ or even Go levels of performance out of a Python app, but you can get performance that's on par with NodeJS. If you're curious to see if it suits you, I'd suggest setting up a small test environment and throwing some traffic at it. As you've seen from the video, it doesn't take long to set up a single endpoint for test purposes. If you don't mind me asking, what sort of thing has such a wild variance that it could have up to 5k requests per second, but only 500k per day?
@potens1 Жыл бұрын
...and in 20 minutes you can learn 80% of what is needed to use FastAPI ! Great introduction ! I'm using FastAPI right now, and a lot of things about it are good, but, I've to say, I find the router pretty weak, compared to i.e. Pyramid, and also, something that bothers me are some of decision they made, i.e. HTTPBearer security scheme is returning 403 instead or 401 when not authenticated. Also, I find some things are really difficult with it (i.e. peeking request content before the endpoint, for i.e. logging). That said, the auto doc, async, and all bells and whistles are worth it, for the time being
@rayen_fekih Жыл бұрын
It would be helpful to have a series of this and include a tutorial about the interaction between machine learning models and FastAPI (maybe you can include saved models using MLFlow).
@tesnimhadhri496011 ай бұрын
Totally agree
@akhilparekh3941 Жыл бұрын
Will be very much helpful if you create a microservice series using fastAPI and django/ flask which can imetate the real life project scenario. So that we(entire ArjanCodes community) get to know better coding techniques as well as other understanding in details about that as well.
@asadurrahmansifat10 ай бұрын
It's a really nice and concise tutorial. For those who are struggling in list comprehension, part in the 'query_item_by_parametters()' function. What it does is, It's going through all the items in the global dictionary object items ( 2:17 ) and for each `item` it's calling 'check_item()' with the argument `item` if it returns true then the item added to the selection list object.( 9:29 )
@wtfbomb9 ай бұрын
Thanks for clarifying, the whole 'query_item_by_parameters()' part was the hardest to wrap my head around! 🧠
@tascsolutions64834 ай бұрын
Thanks, there is also a typo for count in the return all(). It has "item.count != count" when it should be "item.count == count". It threw me off for a bit.
@panossavvaidis6086 Жыл бұрын
Your persistance in consistent type fixing is marvelous
@maleldil1 Жыл бұрын
Every Python programmer should do that. You can start by typing new functions and slowly typing legacy code, gradually increasing coverage in the codebase. Type hints improve everything, from catching trivial bugs to helping your IDE make better suggestions, not to mention living documentation that can't get out of date if you have a type checker in your CI.
@andrewrzepecki7879 Жыл бұрын
Good job Arjan, looking forward to watching this, loving the channel!
@ArjanCodes Жыл бұрын
Thank you Andrew!
@akotronis Жыл бұрын
This is really great! Pydantic seems easier to use that marshmallow and enforces type-hints as best practice. Really love your videos about best practices/architecture stuff. A similar tutorial about Git best practices would be really nice!
@ArjanCodes Жыл бұрын
Thanks so much! 😊
@tascsolutions6483 Жыл бұрын
Have been recently playing around with flask and a little Django in the past. The learning curve and setup time is less steep with FastAPI. I like that templates (jinja2) can be added later.
@wjhdrew Жыл бұрын
The sheer volume of usages of the word 'fast' in the first 20 seconds compelled me to smash that thumbs up button.
@ArjanCodes Жыл бұрын
Haha, thanks!
@JacobKasperek Жыл бұрын
Well to be fair the "A Detailed Python Tutorial" seems to be more of a clickbait than real description but thats a really clear and useful intro to FastAPI
@jdray Жыл бұрын
I've been trying to learn Python. I started programming more than forty years ago, and while I'm not a professional developer, I have experience with a dozen or more programming languages, including C# and Perl (to me, Python seems like an illegitimate love child of those two parents). So... trying to learn Python. So many "intro to Python" videos provide the basics of programming along with the rudimentary structures of the language (formatted strings, getting input, etc.), and they're not useful to someone who can glance at a command, recognize its C roots, and move on without several minutes' discussion about how "print" puts a message on the console. This is the first video I've seen that outlines enough of the way a serious piece of software is written (data structures, function calls, API development, etc.) that it has been the most useful video on Python development I've watched. So thank you. I subscribed, am looking forward to more videos, and will refer back to this one a lot.
@ArjanCodes Жыл бұрын
Wow! Thank you for sharing this!
@ScrobAlex Жыл бұрын
Hey Arjan, thank you for making this video I'm a big fan of FastAPI! I noticed some problems: - at Path and query parameters, I got a JSONDecoder error, more exactly there was a problem at the return type, instead of dict[str, Selection] it should be dict[str, Selection | list[Item]] or other alternatives - in the Routing and requests, post and put endpoints had some unraised HttpExceptions I hope you make more videos using this framework in the future, thank you!
@lookingforbino11 ай бұрын
Thanks so much, i got the sam error repeatedly, fixed when added list[Item]. Why Arjan got no issue at all, a bit skeptical here
@sergeigavrilov3746 Жыл бұрын
Cool video! Thanks! Would be nice to see video about integration FastApi and Dependency Injector, so interesting
@luizhenrique187 Жыл бұрын
In my current job we are developing a microsservice using fastapi, and everything is flowing nicely, in the next week the microsservice will gonna be deployed and if everything goes well we are gonna using for alot of things. Thanks for video, hope to see more fastapi around here
@ArjanCodes Жыл бұрын
Nice! I'll definitely touch more on FastAPI in the future.
@Asand3r7 ай бұрын
Another thanks for such quality content, that's really cool. Keep going, please.
@ArjanCodes7 ай бұрын
Thank you for the kind comment!
@alexandrodisla6285 Жыл бұрын
Fastapi is mean to following the ASGI specification, same as Unicorn. It doesn't make sens to use Gunicorn who follow WSGI spec. Hypercorn is more adapted, however unicorn is robust enough to stay in production.
@nixonkutz3018 Жыл бұрын
Just jam-packed with details and no fluff. Why can't every tutorial be this bandwidth-efficient?!?!
@ArjanCodes Жыл бұрын
Thanks, glad you liked it!
@adrien-barret Жыл бұрын
a video like this one on api best practices would be really nice, like how to add authentication between two services, a authentication with azure directory, etc...
@DeKeL_BaYaZi3 ай бұрын
BEST TEACHER EVER LIVED !
@architech5940 Жыл бұрын
Great tips! However, use "Optional" method from "typing" library instead of manually specifying an optional query param with "None=None"👌
@XRay777 Жыл бұрын
typing.Optional does not give you a default value though so you cannot really get around that. The other part is just preference. As of Python 3.10 you can use | instead of Union so specifically importing an additional class to write Optional[int] seems a bit pointless to me if you can simply write int | None.
@UNgineering Жыл бұрын
From my experience the "Fast" in FastAPI really shines during development. In practice, when running an optimized (not everything-by-default) application, the speed is comparable to Django or Flask. FastAPI has been my go-to framework for the past 3 years.
@olgierd245 Жыл бұрын
Thank you for this so much Arjan. I was just about to learn about FastAPI. There are so many of your vids on my watchlist when I'm going to switch jobs soon. Take care.
@ArjanCodes Жыл бұрын
Glad it was helpful!
@BlackJacketWasp Жыл бұрын
Thanks! It's very concise. I love the part where it provides an ORM-like validation feature.
@CaptainCsaba Жыл бұрын
FastAPI is the bets Python framework for building APIs.
@joaopedrorocha5693 Жыл бұрын
Hi Arjan, thank for the great tutorial! I remember suggesting it for you some time ago ... Thanks for delivering it!
@ArjanCodes Жыл бұрын
Hope you liked it!
@vincentverdugo Жыл бұрын
More FastAPI please. My main backend framework, it's the future and the creator has a sick mustache. Awesome video liked.
@giuliareal336410 ай бұрын
Hi Arjan, this is incredible about how easy is to use the fast API compared to other frameworks (especially from Java). With few lines of code, I can get a good structure of an API. Thanks for the amazing tutorial and greetings from Brazil!!
@KoenCuijp Жыл бұрын
Thanks for this Arjan! Great tutorial covering all you need to get started :) I wonder though why at 10:07 FastAPI doesn't crash with a validation error for you. Your return type of the function doesn't cover list[Item] which the "selection" part of your return value / response contains. I'd expect FastAPI to validate the data through Pydantic and failing to do so because of it containing a list of Item in the dict. Locally I do see this expected behaviour. Anyway, thanks again and greetings from Utrecht :)
@FelippeTadeuA Жыл бұрын
at Grupo Sifra (BR company for credit) all the new python APIs are developed with FastAPI rather than Flask, when well developed they become faster! I already shared your channel with coworks, your videos are amazing
@ArjanCodes Жыл бұрын
Thanks so much for sharing!
@barutistudio1397 Жыл бұрын
More FastApi with your unique style Arjan
@alexforget8 ай бұрын
yes: fastapi, then pydantic and starlette and uvicorn and sqlalchemy and then vue.js for the admin and then the api for the communications between all the js and the api backend, then all the crud for all the objects. Or use Django and focus on the actual problem you want to solve.
@du2xdev530 Жыл бұрын
another great advantage is the dependency injection approach
@dorb1337 Жыл бұрын
Great video! thanks :) I think it could be a really nice addition if you would demonstrate it with Postman for the http requests, or maybe use the Swagger UI built in for the FastAPI ! you still rocks !
@tamles937 Жыл бұрын
Great video! It's a really good intro, but there is so much good stuff yet to cover! What makes me really like this framework are also the way it handles dependency injection, the docs that let you test your app, the async support!! Really a great framework, since I discovered it I've never created an API with another python framework haha!
@naiduanuradha6Ай бұрын
is there any good video that covers all ???
@tamles937Ай бұрын
@@naiduanuradha6 Unfortunately I don't have any suggestion. But the official documentation of FastAPI is well written and not too long, you might find all you need to know there!
@untildawn571411 ай бұрын
Thank you for helping us. learned a lot from you and this tutorial gives me quick knowledge to ace my tech interview today.
@ArjanCodes11 ай бұрын
Best of luck!
@gerozayas9425 Жыл бұрын
I love your videos! Thanks a lot for the great work and inspiration! Keep up the amazing content!!
@ArjanCodes Жыл бұрын
Thank you! Will do!
@phurbagyalzensherpa Жыл бұрын
Thanks Arjan for presenting a comprehensive look at FastAPI.Utilizing Pydantic's BaseModel allows you to design a request body schema that can accommodate multiple fields, and the validator decorator can be employed to validate each field individually.
@user-rc1dq9vu1s Жыл бұрын
Thank you!! Looking forward more and deep video!!!b
@tjanos88 Жыл бұрын
Great content, thanks a lot and have a nice weekend! 🙂
@ArjanCodes Жыл бұрын
Thanks, you too!
@hY-ug8vn Жыл бұрын
please make a full length tutorial for Typer like this video, working to build a CLI tool that manipulates a yaml / json file for example. You have excellent videos.
@lokeishdesaichetty1198 Жыл бұрын
simple and sweet explanation
@ArjanCodes Жыл бұрын
Thank you so much 🙂
@jefffields44073 күн бұрын
Might mention prerequisites for fastapi install!
@marioluizbernardinelli2659 Жыл бұрын
Nice video, as always. However, I need to ask you: do you recommend the use of FastAPI over Flask? Do you use it in your projects?
@jonecir Жыл бұрын
Hey, did you figure out about the use of FastAPI over Flask?
@wtfbomb9 ай бұрын
Thanks for yet another awesome video @ArjanCodes❤ I tried to code along some parts of your video without knowing your approach and I struggled a lot on the parameter query part. Even knowing your solution to the problem know, it still feels kinda hard to wrap my head around it. Any tips how I can improve that and solve such problems faster? Thinking about it.. is a video about problem solving something you want to do in the future?
@LookNumber9 Жыл бұрын
Were you using Python 3.11 for this? Would love to see a few FastAPI and HTMX tutorials.
@TheSzybas Жыл бұрын
What about dataclass_json library? I find it extremely neat to use. Adds a bit to regular Python dataclasses, like including/excluding additional fields, or providing default ones.
@FelippeTadeuA Жыл бұрын
fastapi comes with pydantic, this package already have this features
@mengisi Жыл бұрын
Very explained!
@philippedid4 ай бұрын
Thank's From France very nice share
@RosinskyJ Жыл бұрын
Great video! I would love to see a similar Django tutorial
@milandean Жыл бұрын
Do you have a full length tutorial for using Pydantic? That's something new to me that's quite common and I could use your extremely clean explanations!
@ArjanCodes Жыл бұрын
Not yet! But your suggestion is noted! :)
@whisperingadventurespnw Жыл бұрын
this is awesome. I'm currenty learning fast api, but I've been building apis with django rest so the database part is alluding me. I love your tutorials. could you possibly do another one of these but so a very simple full setup. like one endpoint, the pydantic model, and the database stuff. youtube is definitly missing out on this specific tutorial. currently all the tutorials I've found stop wtih using a dictionary. no one has done the full tutorial yet.
@TangoFoxtrotWhiskey Жыл бұрын
I used similar to the Gino FastAPI tutorial for my team's implementations. Other than we used SqlAlchemy rather than Gino. The installation instructions are out of date but I like the FastAPI, db, and Alembic setup.
@yoshcn Жыл бұрын
Amazing intro to fastapi
@bernidacruz Жыл бұрын
as always great video! Your tutorials are alway a pleasure. A tutorial to SQLalchemy would be very much appreciated as well
@StrategicCIS Жыл бұрын
Is there a reason not to use SQLModel instead of Pydantic and SQLAlchemy?
@_russell Жыл бұрын
Agree, SQLModel seems like the obvious choice if using SQLAlchemy, since SQLModel gives you a pydantic model for free. But not always “instead of” Pydantic. Sometimes the database model is not the same as the HTTP request and response models. In those cases, you’d want to use pydantic to model the request/response, and SQLModel to model what’s in the database.
@Cdaprod27 күн бұрын
Bc Pydantic is all you need :3
@SiricioHernandez Жыл бұрын
Hi, I'm checking FastAPI and I have to say that it has this kind of genious simplicity. Please, if you can, make a new video touching "Depends" and how FastAPI's async nature affects to db access. I've been having some blocking issues accessing an SQLite database with more than one uvicorn worker (I think they are fighting for the sweet love of the database). So, I'm concern about how the async nature of FastAPI can affect the db access. Thanks.
@lucianboboc7513 Жыл бұрын
FastAPI looks pretty amazing
@ArjanCodes Жыл бұрын
It is! :)
@antoniocosta1447 Жыл бұрын
Amazing video!
@ArjanCodes Жыл бұрын
Thanks Antonio, glad you liked it!
@l.kennethwells2138 Жыл бұрын
Your style is fire. Where should I go to learn full-stack? What's your recommendation?
@ReRubis Жыл бұрын
FastAPI is amazing!
@apurbabiswas7218 Жыл бұрын
Would love to see a pandas-based data engineering course -> including software you've already talked about (pydantic, pandera, fastapi etc...)
@turokII6 ай бұрын
This was great, thank you!
@ArjanCodes6 ай бұрын
Glad you enjoyed it!
@AlexanderWhillas Жыл бұрын
I thought the big deal with FastAPI was that it was async and thats what makes it fast. Wanted to see more on that and how you'd use it with other async libs like sqlalchemy[asyncio].
@jonecir Жыл бұрын
Hello Dr. Arjan, I'm glad I found this FastAPI tutorial, very well explained. I have a quick question: where should I install FastAPI? Globally on my PC or inside a Python Project in a virtual environment?
@thegrind962811 ай бұрын
Its always a good idea to use virtual environments unless you want to pollute the system with several packages.
@mahmudhasan3093 Жыл бұрын
hello arjan! can you do a django tutorial series just like this one?
@ukrainian333 Жыл бұрын
Great tutorial! Btw, will be great to see how fast is FastAPI... Something like side by side load tests with NodeJS-based API frameworks, like Express or Fastify, and maybe PHP-based frameworks (idk is there some similar, or not). I use FastAPI for my personal purposes, and small projects for my freelance clients, but I want to now how usable is FastAPI in highload, kinda what limit of this thing?
@ArjanCodes Жыл бұрын
Great suggestion!
@hipertracker Жыл бұрын
IMHO there are two cons of using FastAPI. (1) for unknown reason it still does not have a console (REPL) for interactively testing the code (like (Django or Flask) (2) it has not built-in ORM, you need to install e.g. a powerful (but more complex) SQLAlchemy; and because SQLAlchemy can't handle database migrations you need to add also another library Alembic. Or ou can use something simpler like Piccolo ORM.
@HackerCowboy Жыл бұрын
Would like to see detailed tips and tricks on FastAPI
@KhoaTran-tw5gs4 ай бұрын
I have a question about the code in 10:03, you defined the Selection type is a dictionary but why you can return the selection value in the response object with a list :D
@runthat Жыл бұрын
Hey, thank you 💚 but more importantly, what mic are you using? Sound is great in your vids. Thank you!!
@ArjanCodes Жыл бұрын
Hi Thank you! You can find all of my video gear in the link in the description! :)
@runthat Жыл бұрын
@@ArjanCodes Found it, thank you! Definitely not in the budget this month but maybe soon.
@rick-kv1gl Жыл бұрын
underrated chanel.
@aitools249 ай бұрын
00:05 FastAPI is the fastest API framework 02:20 Using FastAPI simplifies handling JSON data in Python 04:28 Adding endpoints to the API 07:13 Using FastAPI for handling validation and query parameters 09:45 Using FastAPI to create a selection based on query parameters 12:12 FastAPI is easy to get started with and works well with type hints. 14:37 FastAPI simplifies data conversion and provides validation using type hints. 16:51 FastAPI allows for easy validation and adding extra constraints to your API endpoints. 18:56 FastAPI is a fast and efficient package for developing APIs. Crafted by Merlin AI.
@RuslanKovtun Жыл бұрын
You haven't mentioned killer feature of FastAPI which is tight Swagger integration, which allows you to prototype your entire project's API in a single day and give it to both front and back end team. In other words front end team don't have to wait for API to be ready before starting to implement it.
@tulioalbuquerquefarias2748 Жыл бұрын
High quality stuff
@alimaster89 Жыл бұрын
Really nice introduction to fastapi! Will you do (or have you done) an introduction to plotly/dash?
@ArjanCodes Жыл бұрын
Last summer I made Dash mini series!
@oogway_husseinАй бұрын
"fast" repetition joke was great😂
@wexwexexort Жыл бұрын
Would you do a video on fastapi and async / await?
@manningermani Жыл бұрын
Very good video
@ilyess51318 ай бұрын
Excellente vidéo !
@ArjanCodes8 ай бұрын
Thank you so much!
@jairajsahgal710110 ай бұрын
Thank you
@ArjanCodes10 ай бұрын
Glad it was helpful, Jaira!
@BoyOfTheFuture49877 ай бұрын
Hi, I have been using javascript for frontend and have a bit of practice of abckend with js. However, i have been thinking of moving to Python for fastapi and use it as my backend solution for any software that i create. I dont have much expreicne in Python. Whay would you suggest? Should i solidify my backend skills in js or move to Python and fast api and use it. I want to have a pleasant experience when bulidng backend and that is very good in security. Your response would be helpful.
@TimTurnquist Жыл бұрын
Rumor has it that this is F-A-S-T! Would that be a reference to the development timeline or performance? Anyway, loved the video (as usual) and can't wait to try it out myself.
@IwoGda Жыл бұрын
Performance, there are quite a few benchmarks online
@kennethgoldswain7302 Жыл бұрын
Can you do a web assembly section with python if at all possible?
@pthube Жыл бұрын
Thanks!
@pthube Жыл бұрын
Thank you very much for teaching design patterns and architecture, I think these are critical components to be a good software engineer..
@ArjanCodes Жыл бұрын
Thank you so much, glad you like the content!
@nishantyadav6341 Жыл бұрын
Love your videos! @ArjanCodes. What is the plugin in your terminal that suggests packages etc.? (timestamp: 1.23)
@krissn8111 Жыл бұрын
FastAPI + pydantic really makes life easier
@muhammadashirali4982 Жыл бұрын
Functions are a little tricky for begineers, for a starting tutorial my suggestion is to have straight forward functions so they don't have to get in much documentation. For me as an experienced person, I would rather focus on high level architecture of microservices which I can make according to usecase and selection of database with scalability point of view.
@besteryoutubekanal3847 Жыл бұрын
Good video
@ArjanCodes Жыл бұрын
Thanks!
@blanketfish Жыл бұрын
I really like pydantic models. It's really convenient to be able to enforce models for data. I've worked with fast API before but mostly worked on Django. I really like how lightweight fast API is and the built in validation. I'm curious. Do you know how it validates under the hood? I have a project I'm working on now in which I'm using pydantic models, but I'm verifying by constructing the model objects. I'm sure there's an easier way.
@SajanKumar-mx2jg Жыл бұрын
How can we intercept those errors when we miss the params or send the the wrong param type? Thank you for the excellent explanation!
@AnDr3vV72 ай бұрын
Trying to run the api and consume with a mock client process. Problem is I'm using docker containers and can't access the api from my client procces. How do you run both at the same time?
@johncrunk8038 Жыл бұрын
I tried fastapi a few months ago and got bogged down in semantics. Thanks for this new approach.
@ArjanCodes Жыл бұрын
Happy to help!
@TheChihuhua3 ай бұрын
really nice
@ArjanCodes2 ай бұрын
Glad you enjoyed it!
@AttilaFerenczCsibi Жыл бұрын
this is a great tutorial and examples, however in the code you forgot to raise some exceptions. This could lead to unintended side effects like overwrite an existing item without any error message.