Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DevOpsPorto Meetup 38: Intro to FastAPI by Sebastián Ramírez

DevOpsPorto Meetup 38: Intro to FastAPI by Sebastián Ramírez

DevOpsPorto

August 06, 2020
Tweet

More Decks by DevOpsPorto

Other Decks in Technology

Transcript

  1. Intro to
    High performance, easy to learn,
    fast to code, ready for production

    View Slide

  2. Who am I?
    Sebastián Ramírez
    github.com/tiangolo
    linkedin.com/in/tiangolo
    twitter.com/tiangolo
    Dev at Explosion
    Berlin, Germany
    Explosion created:
    I created:
    tiangolo.com

    View Slide

  3. About FastAPI
    ● 19K GitHub stars (about 1K+ per month)
    ● Used by Microsoft, Uber, Netflix, etc.
    ● Performance in the top rank for Python
    @tiangolo

    View Slide

  4. Based on standards
    ● OpenAPI
    ● JSON Schema
    ● OAuth2
    ✨ Automatic API docs ✨
    @tiangolo

    View Slide

  5. Based on standards - for free
    @tiangolo

    View Slide

  6. Based on Python type hints
    ● Autocompletion everywhere
    ● Type checks and type errors
    @tiangolo

    View Slide

  7. Types provide autocompletion
    @tiangolo

    View Slide

  8. Easy and short
    @tiangolo

    View Slide

  9. Less API code
    @tiangolo

    View Slide

  10. Basic FastAPI app
    @tiangolo
    https://somedomain.com/items/5?q=some+query

    View Slide

  11. Basic FastAPI app - docs
    @tiangolo
    https://somedomain.com/docs

    View Slide

  12. Automatic docs
    @tiangolo

    View Slide

  13. Basic FastAPI app with body
    @tiangolo

    View Slide

  14. Basic FastAPI app with body - docs
    @tiangolo

    View Slide

  15. Basic FastAPI app with body - docs
    @tiangolo

    View Slide

  16. Basic FastAPI app with body
    @tiangolo

    View Slide

  17. Basic FastAPI app with body and query
    @tiangolo

    View Slide

  18. Basic FastAPI app with body and query - docs
    @tiangolo
    https://somedomain.com/food/?delivery=true

    View Slide

  19. Basic FastAPI app with body and query
    @tiangolo

    View Slide

  20. JSON array of objects in body
    @tiangolo

    View Slide

  21. JSON array of objects in body - docs
    @tiangolo

    View Slide

  22. JSON array of objects in body
    @tiangolo

    View Slide

  23. JSON array of objects in body - invalid data
    @tiangolo

    View Slide

  24. JSON array of objects in body - validation
    @tiangolo

    View Slide

  25. JSON array of objects in body - validation
    @tiangolo

    View Slide

  26. FastAPI auto-completion
    @tiangolo

    View Slide

  27. Type checks
    @tiangolo

    View Slide

  28. All based on standard Python types
    @tiangolo

    View Slide

  29. Metadata
    @tiangolo

    View Slide

  30. Metadata in docs
    @tiangolo

    View Slide

  31. Metadata in docs
    @tiangolo

    View Slide

  32. Required query
    @tiangolo

    View Slide

  33. Required query in docs
    @tiangolo

    View Slide

  34. Required query validation
    @tiangolo

    View Slide

  35. Required query in docs - valid
    @tiangolo
    https://somedomain.com/food/?quantity=2

    View Slide

  36. Required query in docs - response
    @tiangolo

    View Slide

  37. Required query in docs
    @tiangolo

    View Slide

  38. Validation
    @tiangolo

    View Slide

  39. Validation in docs
    @tiangolo

    View Slide

  40. Validation in docs - response
    @tiangolo

    View Slide

  41. Data validation
    @tiangolo

    View Slide

  42. FastAPI - Performance
    @tiangolo

    View Slide

  43. FastAPI - Performance
    @tiangolo

    View Slide

  44. FastAPI - Other features
    @tiangolo
    ● Dependency Injection
    ● Security - OAuth2
    ● WebSockets
    ● Files
    ● Background Tasks
    ● Easy GraphQL integration
    ● More...

    View Slide

  45. FastAPI - When not to
    @tiangolo
    ● Stable
    ● No new features
    ● Not an API

    View Slide

  46. Other tools
    @tiangolo
    Build great CLIs. Easy to code.
    Based on Python type hints.
    Functional deep learning with types,
    compatible with your favorite libraries.
    typer.tiangolo.com thinc.ai

    View Slide

  47. Thank you!
    Sebastián Ramírez github.com/tiangolo
    linkedin.com/in/tiangolo
    twitter.com/tiangolo
    tiangolo.com
    Questions?
    fastapi.tiangolo.com

    View Slide