5 THINGS ABOUT FASTAPI.
I WISH WE HAD KNOWN BEFOREHAND
ALEXANDER CS HENDORF.
PYCON.IT 2023
THIS TALK IS BASED ON USE CASES.
- DATA MANAGEMENT VIA HUBS / SERVICES.
§ DOMAIN DRIVEN SERVICE CLIENTS.
§ ON PREMS DATA.
§ CLOUD DATA.
§ MIGRATION SZENARIOS.
§ INCLUSIVE ACCESS..
- MICROSERVICES.
WHY FASTAPI.
1. FAST AND HIGH-PERFORMANCE WEB FRAMEWORK
2. EASY TO USE AND LEARN WITH INTUITIVE API DOCUMENTATION
3. SCALABLE AND FLEXIBLE ARCHITECTURE FOR BUILDING APIS
4. AUTOMATIC VALIDATION OF REQUEST AND RESPONSE DATA
5. AUTOMATIC GENERATION OF OPENAPI & JSON SCHEMA
DOCUMENTATION
6. BUILT-IN TESTING FRAMEWORK
7. VERY ACTIVE COMMUNITY
ALEXANDER C. S. HENDORF
MANAGING PARTNER
DATA & AI AT KÖNIGSWEG
PYTHON SOFTWARE FOUNDATION FELLOW, PYTHON SOFTWAREVERBAND CHAIR,
EUROPYTHON BOARD, PYCONDE & PYDATA BERLIN CHAIR
PYDATA FRANKFURT & SÜDWEST
@HENDORF python@hendorf.com
DISCLAIMER.
PARTIALLY OPINIONATED PRESENTATION
! THOUGH
I STILL ❤ FASTAPI
# THANKS TO EVERYONE INVOLVED $%&
A FASTAPI JOURNEY.
- REQUIREMENT
REST API UTILIZING THE OPENAPI STANDARD
- RESEARCH SUGGETS FASTAPI OR CONNEXION
(CONNEXION WAS GREAT BUT UNFORTUNATELY NEGLECTED…)
- PATH TAKEN:
FASTAPI IS THRIVING AND ALIVE: HELLO WORLD IN 5 MINUTES '
- HIGH TRANSFER FROM PREVIOUS REST FRAMEWORKS LIKE FLASK
- ( „FAST API IS ALL ONE NEEDS TO KNOW“
- BUILD STUFF ONE TUTORIAL AT A TIME )
SOME NEXT STEPS
ON THAT JOURNEY.
- ADD MORE ENDPOINTS
- ADD MORE REQUEST MODELS
- ADD MORE RESPONSE MODELS
- ADD COMPLEX MODELS
- ADD VALIDATORS
- BE CONISTENT IN NAMING
- ADD MIDDLEWARE LOGGING
- ADD MIDDLEWARE FOR CONTEXT
- …
SOME NEXT STEPS
ON THAT JOURNEY.
- ADD MORE AND EVEN MORE ENDPOINTS
- ADD MORE AND EVEN MORE REQUEST
MODELS
- ADD MORE AND EVEN MORE RESPONSE
MODELS
- ADD EVEN MORE COMPLEX MODELS
- ADD VALIDATORS
- BE CONISTENT IN NAMING
- ADD AND EVEN MORE MIDDLEWARE
- …
PROJECT GROWTH
- REDUNCANCIES
- REPETITION
SOME CHALLENGES ON THAT JOURNEY.
- ONE NEEDS TO LEARN NOT ONLY FASTAPI BUT
§ PYDANTIC
§ STARLETTE
§ UVICORN
- DESIGN: EVERYTHING IS SOLVED BY ANOTHER LAYER OF
ABSTRACTION: UNCLEAR WHICH LIBRARY IS IN CHARGE *
SOME CHALLENGES ON THAT JOURNEY.
- NEED FOR SUSTAINABLE DESIGN OF ENDPOINTS
- PROBABLY TOO MANY WAYS TO SOLVE THINGS
- CALLS TO OTHER RESOURCES: `async - await`?
- ESTABLISH A ORGANISATION-WIDE STANDARD
- DRY PYDANTIC MODELS NEED A DATA ARCHTITECT
TODAY.
BUILT ON THE SHOULDERS OF GIANTS I..
BUILT ON THE SHOULDERS OF GIANTS II..
GREAT TUTORIALS, BUT IS THIS DOCUMENTATION?.
DON'T REPEAT YOURSELF WITH PYDANTIC.
OPENAPI IN SPHINX.
FASTAPI IS BUILT .
ON THE SHOULDERS OF GIANTS I..
PYDANTIC
STARLETTE
PYDANTIC.
- REQUEST MODELS
- RESPONSE MODELS
- OPENAPI DOCS
PYDANTIC.
- PYDANTIC PARSES THE INPUT DATA
- IF THE DATA CANNOT BE CASTED INTO THE TYPE PYDANTIC RAISES A
USER FRIEDLY EXCEPTION
- ["1", "2", "3"] is a valid List[int] -> [1, 2, 3]
h"ps://docs.pydan.c.dev
PYDANTIC MISUNDERSTOOD.
- VALIDATOR REQUIRES A RETURN VALUE +
- CAN ALSO BE USED TO MANGLE DATA OR DATA CLEANSING ,
- MORE ABOUT VALIDATORS LATER!
PYDANTIC DEFAULTS.
- USE CASE: FRONT END RETIEVES DATA FROM REST BACKEND -
- FE DESIGNER ADDS AN ADDITIONAL PARAMETER currency TO THE
REQUEST
- REQUEST AND RESPONSE MODELS IN PLACE!
- . WE ARE SAVE, AREN'T WE
!KNOW PYDANTIC DEFAULTS.
- FE DESIGNER: THINKS EVERYTHING WORKS, NO ERROR
- BACKEND: DOESN'T NOTICE, DEFAULT IS ` Extra.allow` : UNKNOW
PARAMETERS ARE JUST FILTERED OUT
- `Extra.forbid` ENFORCES CONTRACT
- DESIGN DECISION
FASTAPI IS BUILT .
ON THE SHOULDERS OF GIANTS II..
PYDANTIC
STARLETTE
⭐ STARLETTE.
- "STARLETTE IS A LIGHTWEIGHT ASGI FRAMEWORK/TOOLKIT, WHICH IS
IDEAL FOR BUILDING ASYNC WEB SERVICES IN PYTHON."
§ HTTP WEB FRAMEWORK
§ WEBSOCKET SUPPORT
§ IN-PROCESS BACKGROUND TASKS
§ STARTUP AND SHUTDOWN EVENTS
§ CORS, GZIP, STATIC FILES, STREAMING RESPONSES
§ SESSION AND COOKIE SUPPORT
⭐ SOME STARLETTE.
- CUSTOM PYTHON PACKAGE: INTERFACE TO THE DATA HUB
- DATA CLIENT PROVIDES CONVENIENT, SELF-EXPLANATORY INTERFACES
TO DATA SERVICES ENABLING DEVELOPERS AS WELL AS BUSINESS
USERS.
- client.portfolio.benchmark(id, benchmark=None)
- DATA HUB FASTAPI BE
- ENDPOINT: portfolio/benchmark
Request Model: id, benchmark
- HOW CAN WE GENERATE THE CLIENT AUTOMATICALLY?.
USE CASE: DOMAIN DRIVEN DATA CLIENT.
- CUSTOM PYTHON PACKAGE: INTERFACE TO THE DATA HUB
- DATA CLIENT PROVIDES CONVENIENT, SELF-EXPLANATORY INTERFACES
TO DATA SERVICES ENABLING DEVELOPERS AS WELL AS BUSINESS
USERS.
- client.portfolio.benchmark(id, benchmark=None)
- DATA HUB FASTAPI BE
- ENDPOINT: portfolio/benchmark
Request Model: id, benchmark
- HOW CAN WE GENERATE THE CLIENT AUTOMATICALLY?.
USE CASE: DOMAIN DRIVEN DATA CLIENT.
USE CASE: DOMAIN DRIVEN DATA CLIENT.
- TLDR;
AUTO-GENERATORS BASED ON OPENAPI DID NOT DELIVER CODE
QUALITY EXPECTED
LOSS OF PYTHON OBJECTS OPENAPI IS JSON/YAML
- ✅ SOLUTION: RENDER CODE MEETING OUR STANDARDS WITH JINJA2.
- ISSUE: PATH PARAMETERS AND MODEL PARAMETERS ARE HARD TO
DISTISTINGUISH (AMBIGUTITIES 0)
Q: EG. CAN MIDDLEWARE FIX THIS??
- NEXT STEP: DIVE INTO MIDDLEWARE, WELCOME TO ⭐ STARLETTE !
USE CASE: ENABLING USERS BY SIMPIFING
INTERFACES WITH MIDDLEWARE.
- DON'T TRY THIS AT HOME
- SPIKE: MIDDLEWARE INSPECTS ALL GET REQUESTS ROUTES (INCL. THE
PYDANTIC MODEL) AND MOVES BODY PARAMETERS FROM QUERIES TO
THE REQUEST BODY.
- ✅ MODERATE / ALTER REQUESTS VIA THE MIDDLEWARE
- ✅ HANDLING IS COMPLEX. SOME (FIXABLE BUT UNFORESEEN)
COLLATERAL DAMAGES
- 2 THIS APPROACH FOR A SIMPLER INTERFACE FOR QUERIES WITH
LONGER PARAMETERS DID NOT MEET OUR EXPECTATIONS.
GREAT TUTORIALS.
BUT IS THIS DOCUMENTATION?.
OR WHERE ARE THE DOCSTRINGS?
LET THE DOCSTRINGS OUT.
- FASTAPI 0.95.1 HAS 6022 LINES *
- 259 CLASSES
- 429 FUNCTION OR METHODS
- 11 DOCSTRINGS
- DUE TO DESIGN WITH MANY LAYERS OF ABSTRACTION,
IT'S DIFFICULT TO DEBUG 3
- MORE DOCSTRINGS WOULD BE HELPFUL.
* COUNT EVERY LINE IN FASTAPI: *.PY no dependencies, COUNT """ / 2, COUNT def, COUNT class
LET THE DOCSTRINGS OUT.
- STARLETTE 0.95.1 HAS 6022 LINES *
- 259 CLASSES
- 429 FUNCTION OR METHODS
- 11 DOCSTRINGS
- DUE TO DESIGN WITH MANY LAYERS OF ABSTRACTION,
IT'S DIFFICULT TO DEBUG 3
- MORE DOCSTRINGS WOULD BE HELPFUL.
* COUNT EVERY LINE IN FASTAPI: *.PY no dependencies, COUNT """ / 2, COUNT def, COUNT class
DON'T REPEAT YOURSELF WITH PYDANTIC.
DRY
PYDANTIC.
- ENDPOINT
- RESPONSE MODEL
- OPENAPI DOCS
DRY -DON'T REPEAT YOURSELF- PYDANTIC.
- BETTER ABSTRACTION
- KONSISTENT, REUSEABLE
PYDANTIC INTERITANCE.
- DECOMPOSITIONS INTO SMALL UNITS
§ DRY: DEFINE ONCE INCL. EXAMPLES & VALIDATORS
§ CONSTENCY ACROSS PROJECT OR EVEN ORGANISATION EG. IF
RELEASED AS PACKAGE
- INTERITANCE IS PROBABLY COUNTER INTUITIVE (RIGHT TO LEFT)
PYDANTIC INHERITANCE.
DANGER ZONE!!
USE CASE: DEFINING MODELS FOR AN
ENTIRE ORGANISATION.
- ⭐ INTRODUCE AND ENABLE WITH STANDARDIZARTION 4
- RELEASED AS INTERNAL PACKAGE 5
- 6 CLEAR AND CONCISE DESIGN RULES INCL. NAMING CONVENTIONS
- CENTRALISATION: UPDATES NEED TO BE COORDINATED 7
- LESSONS LEARNED:
§ FOCUS ON DEFINED, CROSS ORGANISATION ATTRIBUTES
§ HAVE SERVICES DESIGN CUSTOM MODELS
5 THINGS ABOUT FASTAPI WE ❤.
ACCESSIBLILITY VIA INTROSPECTION IS GREAT.
DYNAMIC CREATION OF ROUTERS.
CUSTOM VALIDATON ERROR HANDLING .
MIDDLEWARE EASY TO ADD.
5 MORE THINGS !!.
OPENAPI IN SPHINX.
- sphinxcontrib-openapi EXTENSION 8
- DOCS: h?ps://sphinxcontrib-openapi.readthedocs.io/
- ADD TO SPHINX EXTENSIONS (JUST AS OTHERS)
- EXPORT OPENAPI DEF IN YAML
- ADD TO YOUR INDEX %
TALK
What does Starlette really
do for FastAPI?
Saturday, May 27
16:00 - 16:30
LANGUAGE
English
AUDIENCE LEVEL
Intermediate
ELEVATOR PITCH
FastAPI has been growing a lot lately, but people aren’t really aware of the
packages that were the basis for its foundation.
On this talk, we are going to explore Starlette, the web framework on which
FastAPI is built on top of.
ABSTRACT
Starlette is the package that contains the core logic of FastAPI. It’s a timid, and less known
project in comparison to the latter.
We’ll understand what Starlette really is, and what it does for FastAPI. We are going to
explore both frameworks in a comparative way, to understand the things that are
responsibility from one package and the other.
After this talk, you are going to understand more about the internals of one of the most
popular web frameworks in Python.
TAGS
AsyncIO, APIs, Microservices, FastAPI, Starlette
Marcelo Trylesinski
16:00 - 16:30
LANGUAGE
English
AUDIENCE LEVEL
Intermediate
ELEVATOR PITCH
FastAPI has been growing a lot lately, but people aren’t really aware of the
packages that were the basis for its foundation.
On this talk, we are going to explore Starlette, the web framework on which
FastAPI is built on top of.
ABSTRACT
Starlette is the package that contains the core logic of FastAPI. It’s a timid, and less known
project in comparison to the latter.
We’ll understand what Starlette really is, and what it does for FastAPI. We are going to
explore both frameworks in a comparative way, to understand the things that are
responsibility from one package and the other.
After this talk, you are going to understand more about the internals of one of the most
popular web frameworks in Python.
TAGS
AsyncIO, APIs, Microservices, FastAPI, Starlette
Marcelo Trylesinski
Software Engineer
Uvicorn & Starlette maintainer
FastAPI Expert ⚡
THANK YOU!!
Q&A!
@HENDORF / LINKEDIN
THANKS TO MY COLLEAGUES AND PEERS FOR ALL INPUT AND DISCUSSIONS ON
RESULTS PRESENTED HERE: ALEX S. DIMITRI S. FLORIAN P. STEPHAN G.!
THANKS TO LAMBDALABS FOR SHARING STABLE DIFFUSION IMAGE
VARIATIONS $ THANKS TO MAX ERNST FOR PAINTING $

5 Things about fastAPI I wish we had known beforehand

  • 1.
    5 THINGS ABOUTFASTAPI. I WISH WE HAD KNOWN BEFOREHAND ALEXANDER CS HENDORF. PYCON.IT 2023
  • 2.
    THIS TALK ISBASED ON USE CASES. - DATA MANAGEMENT VIA HUBS / SERVICES. § DOMAIN DRIVEN SERVICE CLIENTS. § ON PREMS DATA. § CLOUD DATA. § MIGRATION SZENARIOS. § INCLUSIVE ACCESS.. - MICROSERVICES.
  • 3.
    WHY FASTAPI. 1. FASTAND HIGH-PERFORMANCE WEB FRAMEWORK 2. EASY TO USE AND LEARN WITH INTUITIVE API DOCUMENTATION 3. SCALABLE AND FLEXIBLE ARCHITECTURE FOR BUILDING APIS 4. AUTOMATIC VALIDATION OF REQUEST AND RESPONSE DATA 5. AUTOMATIC GENERATION OF OPENAPI & JSON SCHEMA DOCUMENTATION 6. BUILT-IN TESTING FRAMEWORK 7. VERY ACTIVE COMMUNITY
  • 4.
    ALEXANDER C. S.HENDORF MANAGING PARTNER DATA & AI AT KÖNIGSWEG PYTHON SOFTWARE FOUNDATION FELLOW, PYTHON SOFTWAREVERBAND CHAIR, EUROPYTHON BOARD, PYCONDE & PYDATA BERLIN CHAIR PYDATA FRANKFURT & SÜDWEST @HENDORF python@hendorf.com
  • 5.
    DISCLAIMER. PARTIALLY OPINIONATED PRESENTATION !THOUGH I STILL ❤ FASTAPI # THANKS TO EVERYONE INVOLVED $%&
  • 6.
    A FASTAPI JOURNEY. -REQUIREMENT REST API UTILIZING THE OPENAPI STANDARD - RESEARCH SUGGETS FASTAPI OR CONNEXION (CONNEXION WAS GREAT BUT UNFORTUNATELY NEGLECTED…) - PATH TAKEN: FASTAPI IS THRIVING AND ALIVE: HELLO WORLD IN 5 MINUTES ' - HIGH TRANSFER FROM PREVIOUS REST FRAMEWORKS LIKE FLASK - ( „FAST API IS ALL ONE NEEDS TO KNOW“ - BUILD STUFF ONE TUTORIAL AT A TIME )
  • 7.
    SOME NEXT STEPS ONTHAT JOURNEY. - ADD MORE ENDPOINTS - ADD MORE REQUEST MODELS - ADD MORE RESPONSE MODELS - ADD COMPLEX MODELS - ADD VALIDATORS - BE CONISTENT IN NAMING - ADD MIDDLEWARE LOGGING - ADD MIDDLEWARE FOR CONTEXT - …
  • 8.
    SOME NEXT STEPS ONTHAT JOURNEY. - ADD MORE AND EVEN MORE ENDPOINTS - ADD MORE AND EVEN MORE REQUEST MODELS - ADD MORE AND EVEN MORE RESPONSE MODELS - ADD EVEN MORE COMPLEX MODELS - ADD VALIDATORS - BE CONISTENT IN NAMING - ADD AND EVEN MORE MIDDLEWARE - …
  • 9.
  • 10.
    SOME CHALLENGES ONTHAT JOURNEY. - ONE NEEDS TO LEARN NOT ONLY FASTAPI BUT § PYDANTIC § STARLETTE § UVICORN - DESIGN: EVERYTHING IS SOLVED BY ANOTHER LAYER OF ABSTRACTION: UNCLEAR WHICH LIBRARY IS IN CHARGE *
  • 11.
    SOME CHALLENGES ONTHAT JOURNEY. - NEED FOR SUSTAINABLE DESIGN OF ENDPOINTS - PROBABLY TOO MANY WAYS TO SOLVE THINGS - CALLS TO OTHER RESOURCES: `async - await`? - ESTABLISH A ORGANISATION-WIDE STANDARD - DRY PYDANTIC MODELS NEED A DATA ARCHTITECT
  • 12.
    TODAY. BUILT ON THESHOULDERS OF GIANTS I.. BUILT ON THE SHOULDERS OF GIANTS II.. GREAT TUTORIALS, BUT IS THIS DOCUMENTATION?. DON'T REPEAT YOURSELF WITH PYDANTIC. OPENAPI IN SPHINX.
  • 13.
    FASTAPI IS BUILT. ON THE SHOULDERS OF GIANTS I.. PYDANTIC STARLETTE
  • 14.
    PYDANTIC. - REQUEST MODELS -RESPONSE MODELS - OPENAPI DOCS
  • 15.
    PYDANTIC. - PYDANTIC PARSESTHE INPUT DATA - IF THE DATA CANNOT BE CASTED INTO THE TYPE PYDANTIC RAISES A USER FRIEDLY EXCEPTION - ["1", "2", "3"] is a valid List[int] -> [1, 2, 3] h"ps://docs.pydan.c.dev
  • 16.
    PYDANTIC MISUNDERSTOOD. - VALIDATORREQUIRES A RETURN VALUE + - CAN ALSO BE USED TO MANGLE DATA OR DATA CLEANSING , - MORE ABOUT VALIDATORS LATER!
  • 17.
    PYDANTIC DEFAULTS. - USECASE: FRONT END RETIEVES DATA FROM REST BACKEND - - FE DESIGNER ADDS AN ADDITIONAL PARAMETER currency TO THE REQUEST - REQUEST AND RESPONSE MODELS IN PLACE! - . WE ARE SAVE, AREN'T WE
  • 18.
    !KNOW PYDANTIC DEFAULTS. -FE DESIGNER: THINKS EVERYTHING WORKS, NO ERROR - BACKEND: DOESN'T NOTICE, DEFAULT IS ` Extra.allow` : UNKNOW PARAMETERS ARE JUST FILTERED OUT - `Extra.forbid` ENFORCES CONTRACT - DESIGN DECISION
  • 19.
    FASTAPI IS BUILT. ON THE SHOULDERS OF GIANTS II.. PYDANTIC STARLETTE
  • 20.
    ⭐ STARLETTE. - "STARLETTEIS A LIGHTWEIGHT ASGI FRAMEWORK/TOOLKIT, WHICH IS IDEAL FOR BUILDING ASYNC WEB SERVICES IN PYTHON." § HTTP WEB FRAMEWORK § WEBSOCKET SUPPORT § IN-PROCESS BACKGROUND TASKS § STARTUP AND SHUTDOWN EVENTS § CORS, GZIP, STATIC FILES, STREAMING RESPONSES § SESSION AND COOKIE SUPPORT
  • 21.
  • 22.
    - CUSTOM PYTHONPACKAGE: INTERFACE TO THE DATA HUB - DATA CLIENT PROVIDES CONVENIENT, SELF-EXPLANATORY INTERFACES TO DATA SERVICES ENABLING DEVELOPERS AS WELL AS BUSINESS USERS. - client.portfolio.benchmark(id, benchmark=None) - DATA HUB FASTAPI BE - ENDPOINT: portfolio/benchmark Request Model: id, benchmark - HOW CAN WE GENERATE THE CLIENT AUTOMATICALLY?. USE CASE: DOMAIN DRIVEN DATA CLIENT.
  • 23.
    - CUSTOM PYTHONPACKAGE: INTERFACE TO THE DATA HUB - DATA CLIENT PROVIDES CONVENIENT, SELF-EXPLANATORY INTERFACES TO DATA SERVICES ENABLING DEVELOPERS AS WELL AS BUSINESS USERS. - client.portfolio.benchmark(id, benchmark=None) - DATA HUB FASTAPI BE - ENDPOINT: portfolio/benchmark Request Model: id, benchmark - HOW CAN WE GENERATE THE CLIENT AUTOMATICALLY?. USE CASE: DOMAIN DRIVEN DATA CLIENT.
  • 25.
    USE CASE: DOMAINDRIVEN DATA CLIENT. - TLDR; AUTO-GENERATORS BASED ON OPENAPI DID NOT DELIVER CODE QUALITY EXPECTED LOSS OF PYTHON OBJECTS OPENAPI IS JSON/YAML - ✅ SOLUTION: RENDER CODE MEETING OUR STANDARDS WITH JINJA2. - ISSUE: PATH PARAMETERS AND MODEL PARAMETERS ARE HARD TO DISTISTINGUISH (AMBIGUTITIES 0) Q: EG. CAN MIDDLEWARE FIX THIS?? - NEXT STEP: DIVE INTO MIDDLEWARE, WELCOME TO ⭐ STARLETTE !
  • 26.
    USE CASE: ENABLINGUSERS BY SIMPIFING INTERFACES WITH MIDDLEWARE. - DON'T TRY THIS AT HOME - SPIKE: MIDDLEWARE INSPECTS ALL GET REQUESTS ROUTES (INCL. THE PYDANTIC MODEL) AND MOVES BODY PARAMETERS FROM QUERIES TO THE REQUEST BODY. - ✅ MODERATE / ALTER REQUESTS VIA THE MIDDLEWARE - ✅ HANDLING IS COMPLEX. SOME (FIXABLE BUT UNFORESEEN) COLLATERAL DAMAGES - 2 THIS APPROACH FOR A SIMPLER INTERFACE FOR QUERIES WITH LONGER PARAMETERS DID NOT MEET OUR EXPECTATIONS.
  • 27.
    GREAT TUTORIALS. BUT ISTHIS DOCUMENTATION?. OR WHERE ARE THE DOCSTRINGS?
  • 28.
    LET THE DOCSTRINGSOUT. - FASTAPI 0.95.1 HAS 6022 LINES * - 259 CLASSES - 429 FUNCTION OR METHODS - 11 DOCSTRINGS - DUE TO DESIGN WITH MANY LAYERS OF ABSTRACTION, IT'S DIFFICULT TO DEBUG 3 - MORE DOCSTRINGS WOULD BE HELPFUL. * COUNT EVERY LINE IN FASTAPI: *.PY no dependencies, COUNT """ / 2, COUNT def, COUNT class
  • 29.
    LET THE DOCSTRINGSOUT. - STARLETTE 0.95.1 HAS 6022 LINES * - 259 CLASSES - 429 FUNCTION OR METHODS - 11 DOCSTRINGS - DUE TO DESIGN WITH MANY LAYERS OF ABSTRACTION, IT'S DIFFICULT TO DEBUG 3 - MORE DOCSTRINGS WOULD BE HELPFUL. * COUNT EVERY LINE IN FASTAPI: *.PY no dependencies, COUNT """ / 2, COUNT def, COUNT class
  • 30.
    DON'T REPEAT YOURSELFWITH PYDANTIC. DRY
  • 31.
    PYDANTIC. - ENDPOINT - RESPONSEMODEL - OPENAPI DOCS
  • 32.
    DRY -DON'T REPEATYOURSELF- PYDANTIC. - BETTER ABSTRACTION - KONSISTENT, REUSEABLE
  • 33.
    PYDANTIC INTERITANCE. - DECOMPOSITIONSINTO SMALL UNITS § DRY: DEFINE ONCE INCL. EXAMPLES & VALIDATORS § CONSTENCY ACROSS PROJECT OR EVEN ORGANISATION EG. IF RELEASED AS PACKAGE - INTERITANCE IS PROBABLY COUNTER INTUITIVE (RIGHT TO LEFT)
  • 34.
  • 35.
    USE CASE: DEFININGMODELS FOR AN ENTIRE ORGANISATION. - ⭐ INTRODUCE AND ENABLE WITH STANDARDIZARTION 4 - RELEASED AS INTERNAL PACKAGE 5 - 6 CLEAR AND CONCISE DESIGN RULES INCL. NAMING CONVENTIONS - CENTRALISATION: UPDATES NEED TO BE COORDINATED 7 - LESSONS LEARNED: § FOCUS ON DEFINED, CROSS ORGANISATION ATTRIBUTES § HAVE SERVICES DESIGN CUSTOM MODELS
  • 36.
    5 THINGS ABOUTFASTAPI WE ❤. ACCESSIBLILITY VIA INTROSPECTION IS GREAT. DYNAMIC CREATION OF ROUTERS. CUSTOM VALIDATON ERROR HANDLING . MIDDLEWARE EASY TO ADD. 5 MORE THINGS !!.
  • 37.
    OPENAPI IN SPHINX. -sphinxcontrib-openapi EXTENSION 8 - DOCS: h?ps://sphinxcontrib-openapi.readthedocs.io/ - ADD TO SPHINX EXTENSIONS (JUST AS OTHERS) - EXPORT OPENAPI DEF IN YAML - ADD TO YOUR INDEX %
  • 39.
    TALK What does Starlettereally do for FastAPI? Saturday, May 27 16:00 - 16:30 LANGUAGE English AUDIENCE LEVEL Intermediate ELEVATOR PITCH FastAPI has been growing a lot lately, but people aren’t really aware of the packages that were the basis for its foundation. On this talk, we are going to explore Starlette, the web framework on which FastAPI is built on top of. ABSTRACT Starlette is the package that contains the core logic of FastAPI. It’s a timid, and less known project in comparison to the latter. We’ll understand what Starlette really is, and what it does for FastAPI. We are going to explore both frameworks in a comparative way, to understand the things that are responsibility from one package and the other. After this talk, you are going to understand more about the internals of one of the most popular web frameworks in Python. TAGS AsyncIO, APIs, Microservices, FastAPI, Starlette Marcelo Trylesinski 16:00 - 16:30 LANGUAGE English AUDIENCE LEVEL Intermediate ELEVATOR PITCH FastAPI has been growing a lot lately, but people aren’t really aware of the packages that were the basis for its foundation. On this talk, we are going to explore Starlette, the web framework on which FastAPI is built on top of. ABSTRACT Starlette is the package that contains the core logic of FastAPI. It’s a timid, and less known project in comparison to the latter. We’ll understand what Starlette really is, and what it does for FastAPI. We are going to explore both frameworks in a comparative way, to understand the things that are responsibility from one package and the other. After this talk, you are going to understand more about the internals of one of the most popular web frameworks in Python. TAGS AsyncIO, APIs, Microservices, FastAPI, Starlette Marcelo Trylesinski Software Engineer Uvicorn & Starlette maintainer FastAPI Expert ⚡
  • 40.
    THANK YOU!! Q&A! @HENDORF /LINKEDIN THANKS TO MY COLLEAGUES AND PEERS FOR ALL INPUT AND DISCUSSIONS ON RESULTS PRESENTED HERE: ALEX S. DIMITRI S. FLORIAN P. STEPHAN G.! THANKS TO LAMBDALABS FOR SHARING STABLE DIFFUSION IMAGE VARIATIONS $ THANKS TO MAX ERNST FOR PAINTING $