Clean Architecture Example using FastAPI framework

0xTheProDev 0xTheProDev Last update: Feb 27, 2024

fastapi-clean-example

Python FastAPI OpenAPI Swagger GraphQL Code style: black Typed with: pydantic Open Issues Closed Issues Open Pulls Closed Pulls Contributors Activity

Description

Example Application Interface using FastAPI framework in Python 3

This example showcases Repository Pattern in Hexagonal Architecture (also known as Clean Architecture). Here we have two Entities - Books and Authors, whose relationships have been exploited to create CRUD endpoint in REST under OpenAPI standard.

Installation

  • Install all the project dependency using Pipenv:

    $ pipenv install --dev
  • Run the application from command prompt:

    $ pipenv run uvicorn main:app --reload
  • You can also open a shell inside virtual environment:

    $ pipenv shell
  • Open localhost:8000/docs for API Documentation

  • Open localhost:8000/graphql for GraphQL Documentation

Note: In case you are not able to access pipenv from you PATH locations, replace all instances of pipenv with python3 -m pipenv.

Testing

For Testing, unittest module is used for Test Suite and Assertion, whereas pytest is being used for Test Runner and Coverage Reporter.

  • Run the following command to initiate test:
    $ pipenv run pytest
  • To include Coverage Reporting as well:
    $ pipenv run pytest --cov-report xml --cov .

License

© MIT License

Subscribe to our newsletter