4 ms·
Feels like an in-between library that I'm not sure has a great fit in the current Python BE environment. It's not as batteries-included as Django, primarily be
by tinthedev 2y ago
Feels like an in-between library that I'm not sure has a great fit in the current Python BE environment.
It's not as batteries-included as Django, primarily because Django's the incumbent and the ecosystem is vast.
It's not as modular and independent as Flask, which it's taking a lot of inspiration from.
It doesn't seem to bring enough to the table to be flat out better all-rounder than FastAPI.
I'm quite unsure where I'd use it instead of one of those 3.
From searching through the documentation and trying to find it out, the primary "secret sauce" seems to be Dependency Injection, quite a hard sell for a Python framework.
- rybosome 2y agoFastAPI also supports dependency injection.
- tinthedev 2y agoWas quoting the library's docs. I've actually used FastAPI's DI, which is a nice convenience. It didn't feel as a big selling point, again, due to this being Python. Wrapping up your own DI is near trivial, and barely feels like a pattern. Thanks for pointing that out, I didn't even realize last night how weak of a selling point this is, even.
- rybosome 2y agoYeah, you’re right that it’s not a strong sell. It’s not clear to me why I’d want to use this over any other more mature framework.
- globular-toast 2y agoI must have missed the part where we decided there can only be three Python web frameworks... For a start, this shouldn't be compared with Django at all. This is, as far as I can tell, a web framework, as advertised. Django is a complex CRUD-web-app framework that is commonly mistaken for a web framework (probably because it calls itself that). This is important because while there isn't really room for many Djangos, there is room for many web frameworks. That's why we have lots: Flask, Bottle, FastAPI, Pyramid etc. Django is like a complete house: it has everything you need for doing a very specific thing, namely building a CRUD web app. But if you want to add an extra room or something it's a struggle. You either rebuild the house or clumsily bolt on an extension. This kind of thing fits into your own software architecture which you'll hopefully design to be simple and adaptable. The choice between FastAPI, Flask or this is but a tiny detail at the edge of your application, like the colour of the front door of your house. You don't build the house around the front door, you just choose the colour you like and if you change your mind later you get a new door. Stuff like Django has convinced people that choice of web framework is a huge deal that will determine the entire future of your application. It shouldn't be like that. Choose modular components and don't write yourself into a corner.