Skip to content

SWeszler/fastapi-template

Repository files navigation

FastAPI Template

Table of Contents

Description

Features

Modules

Modules don't have any dependencies between them, they are independent. New objects for dependencies are created in deps.py file.

app
├── core
│   ├── config.py
└── modules
    ├── api
		│   ├── v1
		│   │   ├── api.py
    │   ├── deps.py
    │   └── routes.py
    ├── db
		│   ├── deps.py
		│   └── session.py
		└── items
		    ├── deps.py
		    ├── service.py
		    ├── routes.py
		 		└── schemas.py

Dependencies (deps)

We use Dependency Injection, each module has file deps.py. How to import module dependencies:

Schema

Database Module

Create Table

Create table query for PostgreSQL:

CREATE TABLE IF NOT EXISTS items (
	id SERIAL PRIMARY KEY,
	title VARCHAR(255) NOT NULL,
	description VARCHAR(255) NOT NULL
);
Insert Data

Insert data query for PostgreSQL:

INSERT INTO items (title, description) VALUES ('Item 1', 'Description 1');

API

Versioning

Config

Environment Variables

Settings

Logging

Testing

Docker

Build image:

docker build . --tag gcr.io/fastapi-template-394307/fastapi-template

Run container:

docker run -p 5000:8080 gcr.io/fastapi-template-394307/fastapi-template

Google Cloud Run Deployment

Deploy to Google Cloud Run:

gcloud builds submit --tag gcr.io/fastapi-template-394307/fastapi-template
gcloud run deploy --image gcr.io/fastapi-template-394307/fastapi-template --platform managed

Performance Testing

Locust

Installation

pip install locust

Run

locust -f locustfile.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published