FastAPI implementation of an identifier resolver.
The rslv implementation provides a generic identifier resolution service that may be adapted
to support different schemes. The base requirement is that identifiers are of the
form scheme:content where scheme is a scheme name (e.g. "doi" or "ark") and content is the
value of the identifier (e.g. 10.12345/foo or 99999/fd99).
There are three main components to the rslv application: the web application, the configuration database, and a script for managing content in the configuraton database. The web application component is intended to be run within the context of an ASGI server such as uvicorn, unit, daphne, or hypercorn.
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
Component(rslv, rslv, "Resolver service")
ComponentDb(config, config, "Indentifier definitions")
Component(manage, manage, "Management script")
Component_Ext(server, server, "ASGI Server")
Rel(manage, config, "Updates")
Rel(rslv, config, "Uses")
Rel(server, rslv, "Serves", "http")
@enduml
Components of rslv. The database (typically sqlite) is managed by the manage.py script. An ASGI server makes rslv accessible over http.
An identifier definition specifies the properties of an identifier and the action to be taken. Definitions may match on the scheme
With uvicorn installed, a development instance of rslv can be started from the commandline like:
python rslv/app.py
The service may be accessed at http://localhost:8000/