Skip to main content

Tools for setting up an API. Built on the FastAPI framework

Project description

coopapi

package for setting up a quick API built on the FastAPI framework

example

Setup a dummy pydantic dataclass that has some attributes

from pydantic.dataclasses import dataclass as pydandataclass, Field
from cooptools.randoms import a_string, a_phrase

class DummySchemaConfig:
    allow_population_by_field_name = True
    schema_extra = {
        "example": {
            'id': a_string(10),
            'desc': a_phrase(10),
            'active': True,
        }
    }

@pydandataclass(config=DummySchemaConfig)
class DummySchema:
    id: str = Field(...)
    desc: str = Field(...)
    active: bool = Field(...)

Using the dummySchema pydantic dataclass, stubb in some callbacks and create the api shell object. This will be used to setup the core funcationality of our API. Create a FastAPI() object that is used to host our router.

Note: multiple routers (shells) can be added to the same FastAPI() object such that you can build out an extensive API.

Finally, serve the app...

from examples.dummySchema import DummySchema
from coopapi import createRequestCallback, ApiShell, deleteRequestCallback
import uvicorn
from fastapi import FastAPI

# create the callbacks for what should be done when the various endpoints are called. This is likely a
# db interaction or a forwarding request.
create_callback: createRequestCallback = lambda r, t: t
delete_callback: deleteRequestCallback = lambda r, t: True

# setup the api itself, use a base FastAPI object and then an api_shell which has its router included in the
# base api
app = FastAPI()
api_shell = ApiShell(target_schema=DummySchema,
                     base_route='/dummy',
                     on_create_callback=create_callback,
                     on_delete_callback=delete_callback)
app.include_router(api_shell.router, tags=["dummy_shell"])


# serve the app
uvicorn.run(app, port=1219)

You can visit the docs site of the created api at http://localhost:1219/docs#/

img.png

Project details


Download files

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

Source Distribution

coopapi-0.6.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

coopapi-0.6-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file coopapi-0.6.tar.gz.

File metadata

  • Download URL: coopapi-0.6.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for coopapi-0.6.tar.gz
Algorithm Hash digest
SHA256 ebbad1c0d48b45cd7864d316f5eaef21e94bc3ce69ee06d9d122f1081eadefbb
MD5 e79c33c92345026f20f6f38c03850a7a
BLAKE2b-256 f9c5b27e155dd812028a4145aa362bd032cd7833c04f7361fb9a8eeccf172782

See more details on using hashes here.

File details

Details for the file coopapi-0.6-py3-none-any.whl.

File metadata

  • Download URL: coopapi-0.6-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for coopapi-0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 acd4d4ffc929385910abcc849427566d928d2d7ac457bc4a1137adb55b2f7484
MD5 e06d730038855e38e371b05bb2d8164c
BLAKE2b-256 cdf88d4a87eed10a8037e4611b88abf3525e3e0b465d00d292afcdcdb3401aed

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page