When comparing FastAPI vs Slim, the Slant community recommends FastAPI for most people. In the question“What are the best web frameworks to create a web REST API?” FastAPI is ranked 4th while Slim is ranked 12th. The most important reason people chose FastAPI is:
It has a simple but powerful dependency injection system, it can be used to handle authentication, per-user rate limiting, authorization controls (e.g. with roles), etc.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Dependency injection
It has a simple but powerful dependency injection system, it can be used to handle authentication, per-user rate limiting, authorization controls (e.g. with roles), etc.
Pro Standards
It is based on standards: OpenAPI, JSON Schema and OAuth 2.0.
Pro Data validation
It validates the data using the types you declared. Even in deeply nested JSON requests.
Pro High-performance
It's based on Starlette and Pydantic, so, it's one of the fastest Python frameworks.
Pro Editor completion
It is based on Python type declarations, so, editors and tools can give great support. Including type checks and autocompletion everywhere.
Pro One of the fastest growing communities
Pro Fast is really fast (!)
It's easy to develop API based applications in Python on deadlines for Android and IOS Development.
Pro Automatic docs
It generates interactive API documentation automatically from your code.
Pro Database independent
It's independent of database or ORM, but compatible with all of them. Including relational databases and NoSQL.
Pro Async IO / optional
It's based on Async IO, which gives it high concurrency. But you can use non-async libraries and it runs them appropriately.
Pro World class documentation
It has some of the best documentation of any framework.
Pro WebSockets
Because it's an async framework, it can handle async-native protocols like WebSockets.
Pro OAuth 2.0
It has integrated support for OAuth 2.0. Including declaring required scopes per endpoint. So, you can easily integrate it with external OAuth 2.0 providers or build your own with it.
Pro Background tasks
Included support for background tasks, thanks to being based on Starlette.
Pro Supports GraphQL
Python's graphene library is included as an optional dependency meaning that GraphQL API's are supported out of the box, with no additional tweaking needed.
Pro Well organized and thorough documentation
Slim's documentation is well organized and detailed, every concept is thoroughly explained and it is very helpful for both advanced users and beginners.
Pro A good starting point
Slim is minimal and that is a good thing if you want to start from there. It can be easily extended and even supports popular packages that are used in Laravel (like Illuminate\Database (eloquent)) for example.
Pro REST based
REST fans will love the REST based architecture.
Pro Supports tie-ins for Rack-like middleware
Rack is an interface used in Ruby frameworks used to group and order modules, which most of the time are Ruby classes, and specify between them.
Slim uses a simple concept for it's middleware. By wrapping HTTP requests and responses it unifies the middleware into a single method call.
Pro Useful classes
Contains classes for managing requests, responses, cookies, logging, views, HTTP caching, and more.
Pro Flexible
Slim doesn't demand that you stick to a fixed folder structure. As long as you load Slim the right way you can do anything from there the way you like it.
Pro Extremely lightweight
Paired with swoole it's a micro service powerhouse.
Pro Open source
The Slim Framework is open source and is released under the MIT public license
Pro Extremely customizable
You can add any dependency, package or class that you want to use as a contained dependency.
Pro Supports Php 5.3 and PHP 7
Pro Makes it easy to understand the way some abstract functions and classes are built
In Django most things are abstracted, you just call some function or class without knowing how they were built, but with Slim, you end up understanding the way some abstract functions and classes are built.
Pro Hooks for executing code at different points in its life-cycle
Slim supports code hooks for executing functions at different points in time during the application's lifecycle.
Cons
Con Smaller community
Since FastAPI is relatively new, its community is smaller than Django Rest Framework. But it can grow with time.
Con Very little consistency among different versions
There have been quite some changes that break the compatibility between Slim 2 and Slim 3. Even if you learned how to work with the Slim 2, you will find that Slim 3 requires re-training.
Con Dependency injection is too weak
It is not really dependency injection, but just a configurable container.
Con Needs strong bases to create dependencies
The dependency container schema of Slim is one of the biggest PROS and CONS of the framework. It is true that this schema brings so much flexibility to add anything, but another thing that is true is that you need to have strong bases of patterns, and an extensive knowledge of your libraries to convert it into a Slim dependency.
Con Too minimal
While it's true that Slim is a microframework, it's still too minimal. When used for throwaway projects or simple prototypes, it's perfect. But in the long run, it becomes less and less useful and you end up in implementing a full custom framework in trying to tackle all the missing features.