Skip to main content

A web based REST API for the duit library.

Project description

REST for Duit

PyPI Github

A web-based REST API for duit datafields.

This is an addon module for the data ui toolkit (duit) which adds REST API support for DataFields.

Installation

The package can be installed directly from PyPI.


pip install duit-rest

Documentation

Duit-rest uses FastAPI as REST backend to handle HTTP requests. The main class is the RESTService which handles the HTTP server and maps the annotated DataFields to the corresponding endpoints.

RESTEndpoint

It is possible to annotate existing DataFields with the RESTEndpoint annotation. This annotation later tells the RESTService if the field has to be exposed over REST. It is recommended to gather all DataFields in a single object:

from duit_rest.RESTEndpoint import RESTEndpoint


class Config:
    def __init__(self):
        self.name = DataField("Cat") | RESTEndpoint()

By default, the name of the variable (e.g. name) is used as REST endpoint identifier. It is possible to change the name through the RESTEndpoint annotation.

self.name = DataField("Cat") | RESTEndpoint(name="the-cats-name")

RESTService

The RESTService handles the HTTP server and mapping with the DataFields. Here is a simple example on how to create a RESTService, add the previously defined config and start the service.

# create an actual instance of the config
config = Config()

# create a rest service
rest_service = RESTService()

# add the config object (create mapping) under the route "/config"
rest_service.add_route("/config", config)

# run the service
rest_service.run()

Settings

The RESTService has several default arguments that can be changed before the service is started:

# RESTService parameters and their default values
host: str = "0.0.0.0",  # on which interface the service is running
port: int = 9420,  # on which port the service is running
title: str = "REST API"  # title of the API

Routes

It is possible to add various objects to the RESTService, each with a unique route (address).

rest_service.add_route("/config", config)

Each DataField is accessible under this route, so for example the name field would be available at /config/name.

API Usage

Getting values:

# Get entire configuration
GET http://localhost:9420/config

# Get specific field
GET http://localhost:9420/config/name

Setting values:

# Update entire configuration
POST http://localhost:9420/config
Content-Type: application/json

{
    "name": "NewName",
    "age": 25
}

# Update specific field
GET http://localhost:9420/config/name?value="NewName"

Start

To start the service, call the run() method. This is a blocking method that doesn't return until the service is shutdown:

# run blocking
rest_service.run()

To start the service in its own thread, set the blocking argument to `False:

# run non-blocking
thread = rest_service.run(blocking=False)

About

Copyright (c) 2025 Florian Bruggisser

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

duit_rest-0.1.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file duit_rest-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: duit_rest-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for duit_rest-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a63e14d22dcc89d7c3ab2e88a759ffba15f89279f060d7284e7e4b1405c92c7
MD5 c104d18f517f16ed8f3f405a050d64ef
BLAKE2b-256 289f9891d1134d4d6ecdc7070f493919c165134f5251d4717f3e7dffb4873bf7

See more details on using hashes here.

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