Skip to main content

APIToolbox

Full-stack, asynchronous Python3 framework.

Design goals

  • Fast, full-service framework
  • Modular approach that does not force any design decisions

Getting started

from fastapi import FastAPI, Request

from apitoolbox import crud, db_registry
from apitoolbox.middleware import SessionMiddleware
from apitoolbox.models import BASE, Session, User

DATABASE_URL = "sqlite:///sqlite.db?check_same_thread=False"


# Define our model
class MyUser(User):
    pass


# Instantiate the application
app = FastAPI()
app.add_middleware(SessionMiddleware, bind=DATABASE_URL)

# Create all tables
bind = db_registry.get_or_create(DATABASE_URL)
BASE.metadata.create_all(bind=bind)

# Load some data
session = Session()
for name in ["alice", "bob", "charlie", "david"]:
    user = MyUser.get_by_username(session, name)
    if user is None:
        user = MyUser(username=name)
        session.add(user)
session.commit()

# Add an endpoint
@app.get("/users")
async def list_users(
        request: Request
):
    return await crud.list_instances(MyUser, request.state.session)

Assuming the above code is stored in the file main.py, then run it via:

uvicorn main:app --reload

Call the endpoint:

curl -s localhost:8000/users | jq .

The output should contain a list of 4 users, each with the attributes id, username, updated_at and created_at.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apitoolbox-0.12.0.tar.gz (26.8 kB view details)

Uploaded Source

File details

Details for the file apitoolbox-0.12.0.tar.gz.

File metadata

  • Download URL: apitoolbox-0.12.0.tar.gz
  • Upload date:
  • Size: 26.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9

File hashes

Hashes for apitoolbox-0.12.0.tar.gz
Algorithm Hash digest
SHA256 023fe13065781aedfa12a90b69311462ff14617f2c8260f0fc3affad302bd103
MD5 36107fc25f5362f5ebeda3b9b054f91a
BLAKE2b-256 16228d1a1554a92f19d58a66ec3461ff9a02f705274fe28625d52e79c2034465

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.12.0 This release

1 file

0.11.2

1 file

0.11.1

1 file

0.11.0

1 file

0.10.0

1 file

0.9.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page