Chapter 6. Dependencies
Preview
One of the very nice design features of FastAPI is a technique called dependency injection. This term sounds technical and esoteric, but it’s a key aspect of FastAPI and is surprisingly useful at many levels. This chapter looks at FastAPI’s built-in capabilities as well as how to write your own.
What’s a Dependency?
A dependency is specific information that you need at some point. The usual way to get this information is to write code that gets it, right when you need it.
When you’re writing a web service, at some time you may need to do the following:
-
Gather input parameters from the HTTP request
-
Validate inputs
-
Check user authentication and authorization for some endpoints
-
Look up data from a data source, often a database
-
Emit metrics, logs, or tracking information
Web frameworks convert the HTTP request bytes to data structures, and you pluck what you need from them inside your Web layer functions as you go.
Problems with Dependencies
Getting what you want, right when you need it, and without external code needing to know how you got it, seems pretty reasonable. But it turns out that consequences exist:
- Testing
-
You can’t test variations of your function that could look up the dependency differently.
- Hidden dependencies
-
Hiding the details means that code your function needs could break when external code changes.
- Code duplication
-
If your dependency is a common one (like looking up a user in a database or combining values ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access