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.1.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

coopapi-0.1-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: coopapi-0.1.tar.gz
  • Upload date:
  • Size: 6.0 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.1.tar.gz
Algorithm Hash digest
SHA256 5f8a8a324c84a0b84cad40ba93aef1b50387d5a9ce5623809b89e1487a7b5ec0
MD5 27f1233a85e653ad6a32fe87d7c0bd3d
BLAKE2b-256 05677b4148719654a699dea6dbcd683499fb6fdc635038421934c46881a3fcb3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: coopapi-0.1-py3-none-any.whl
  • Upload date:
  • Size: 6.3 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f55ccac38facf8118eb4545972f7e0ff8a5cb9de7bab172d34af37ee2b3fd794
MD5 15a03875a66024ecf3a42153feddd00b
BLAKE2b-256 51b3a3529c24df797d5232e9885b8f5e21688d48f3a864b1cd58532229542f7e

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