halfapi/README.md

1.9 KiB

HalfAPI

Base tools to develop complex API with rights management.

This project was developped by Maxime Alves and Joël Maïzi. The name was chosen to reference HalfORM, a project written by Joël Maïzi.

Dependencies

  • python3
  • python3-pip
  • libgit2-dev
  • starlette
  • PyJWT
  • click
  • uvicorn
  • orjson
  • pyyaml

Configuration

Configure HalfAPI in the file : .halfapi/config .

It's a toml file that contains at least two sections, project and domains.

https://toml.io/en/

### Project

The main configuration options without which HalfAPI cannot be run.

secret : The file containing the secret to decode the user's tokens.

port : The port for the test server.

loglevel : The log level (info, debug, critical, ...)

Domains

Specify the domains configurations in the following form :

[domains.DOMAIN_NAME]
name = "DOMAIN_NAME"
enabled = true
prefix = "/prefix"
module = "domain_name.path.to.api.root"
port = 1002

Specific configuration can be done under the "config" section :

[domains.DOMAIN_NAME.config]
boolean_option = false
string_value = "String"
answer = 42
listylist = ["hello", "world"]

And can be accessed through the app's "config" dictionnary.

Usage

Develop an HalfAPI domain by following the examples located in tests/dummy_domain . An HalfAPI domain should be an importable python module that is available in the python path.

Run the project by using the halfapi run command.

You can try the dummy_domain with the following command.

PYTHONPATH=$PWD/tests python -m halfapi domain dummy_domain

CLI documentation

Use the CLI help.

python -m halfapi --help
python -m halfapi domain --help

API Testing

@TODO

Example

Check out the sample project that helps you to build your own domain.

Development

@TODO