Skip to main content

WIP router for Datasette plugins

Project description

datasette-plugin-router

PyPI Changelog Tests License

WIP router for Datasette plugins

Datasette plugins that have a lot of custom API endpoints can get tiresome to write by hand. datasette-plugin-router aims to be a small Python library that adds a FastAPI-like API for defining custom Datasette plugin endpoints.

  • Define routes with familiar GET/POST decorators
  • Define Pydantic-backed input/output schemas on JSON endpoints
  • register_routes() compatability
  • export to OpenAPI schema for codegen'ing clients

Sample usage:

from datasette import Response, hookimpl
from datasette_plugin_router import Router, Body
from pydantic import BaseModel

router = Router()

class Input(BaseModel):
    id: int
    name: str

class Output(BaseModel):
    id_negative: int
    name_upper: str

@router.POST(r"/-/demo1$", output=Output)
async def demo1(params: Body[Input]) -> Output:
    output = Output(
        id_negative=-1 * params.id,
        name_upper=params.name.upper(),
    )
    return Response.json(output.model_dump())


@router.GET(r"/-/hello/(?P<name>.*)$")
async def hello(name: str):
    return Response.html(f"<h1>Hello, {name}!</h1>")


@hookimpl
def register_routes():
    return router.routes()

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

datasette_plugin_router-0.0.1a3.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

datasette_plugin_router-0.0.1a3-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file datasette_plugin_router-0.0.1a3.tar.gz.

File metadata

File hashes

Hashes for datasette_plugin_router-0.0.1a3.tar.gz
Algorithm Hash digest
SHA256 07c091069c644a17402afa9cbed22b50f4c165ed54263a0b07445fb10e6806f9
MD5 24843b3a2b7eb5afb7d5a282184e34c1
BLAKE2b-256 c2d58dfceae428c9530f374bd3004158d39524e9f42cc32ad0f01180896b252b

See more details on using hashes here.

Provenance

The following attestation bundles were made for datasette_plugin_router-0.0.1a3.tar.gz:

Publisher: publish.yml on datasette/datasette-plugin-router

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file datasette_plugin_router-0.0.1a3-py3-none-any.whl.

File metadata

File hashes

Hashes for datasette_plugin_router-0.0.1a3-py3-none-any.whl
Algorithm Hash digest
SHA256 e9986e78acdad4889f9b3f1af4fc97f6a4e7cb2b4a48f577686463e030323cbc
MD5 9db7dd2f7ffd2ebba81eaeb7c722f06a
BLAKE2b-256 1c9df144edeae2b14aa12a9c9c9d97b8c55d0a4aaf578c6b1dc9c1dccc942af4

See more details on using hashes here.

Provenance

The following attestation bundles were made for datasette_plugin_router-0.0.1a3-py3-none-any.whl:

Publisher: publish.yml on datasette/datasette-plugin-router

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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