An ASGI framework to build HTTP API's from a Python module structure.
Go to file
Maxime Alves LIRMM@home 2b86a78a4e [doc] completed README 2020-07-14 15:14:23 +02:00
conf [conf] removed HALFORM_DSN from the env parameters, added support for the 2020-07-09 10:23:13 +02:00
halfapi [cli] add apihost and apiport options to dbupdate 2020-07-12 22:00:52 +02:00
tests [debug] better handling of debug routes 2020-07-10 12:58:53 +02:00
.gitignore [middleware] put AclCallerMiddleware in lib file 2020-07-08 17:12:58 +02:00
README.md [doc] completed README 2020-07-14 15:14:23 +02:00
__init__.py [WIP] Import halfapi OK dans test_jwt_middleware. 2020-07-03 21:39:59 +02:00
poetry.lock [deps] added apidb to dependencies 2020-07-12 22:10:16 +02:00
pyproject.toml [deps] added apidb to dependencies 2020-07-12 22:10:16 +02:00
pytest.ini [test] add default DEBUG flag for pytest, add tests for jwt_middleware 2020-07-09 10:29:17 +02:00
requirements.txt merge avec cli_update_db 2020-07-03 11:58:13 +02:00

README.md

HalfAPI

This Python-based ASGI application aims to provide the core functionality to multiple API domains.

It's developed at the LIRMM in Montpellier, France.

The name "halfAPI" comes from the deep relationship between it and halfORM, a project authored by Joël Maizi.

You'll need a database with the API details. You can find the database model in halfapi/models/api.sql

With halfORM's "hop" command, we generate the models that describe the database from the database schema itself. You can find the details in hop_api repository.

NOTE : The authentication module is deeply linked with auth_lirmm, so if you need to use the acl.connected function, you will need a running auth_lirmm server to get a token.

TODO : include a token generation tool for testing purpose.

Dependencies

  • python3
  • python3-pip
  • python3-virtualenv

pip

  • poetry

Installing

As the project uses the poetry package manager, you first have to install it globally. It will replace virtualenv, pip, etc...

pip3 install poetry

Be sur to include the bin directory of pip in your PATH.

Virtual Environment (optional)

Then, cd in the halfapi repo, and chose your python version :

POETRY_VIRTUALENV_PATH=$HOME/.pyvenv poetry env use 3.7

NOTE : The virtualenv will be automatically be activated each time you run a command with the poetry tool. If you want to do it the classical way, or even without virtual environment, it's up to your choice.

Installation of the deps :

poetry install

If you need a domain, i.e: organigramme, just add -E organigramme to the command.

NOTE : You need to run poetry install before installing any domains (that depends on halfapi).

API database

Populate the API database with te server information, the domain's routes, and their ACL by running the following command :

poetry run halfapi dbupdate

NOTE: You need to have the domain's package installed if you want to populate the api routes module, as it check for the existence of the acl functions.

Database configuration

The api and domains' databases connection settings are stored by default in /etc/half_orm. Check halfORM documentation for more information on how to write these configuration files.

You can set the HALFORM_SECRET environment variable if you want to specify an authentication secret.

TODO : find a modular way to configure the database connection for each mounted domain

Running

Development mode

In the halfapi repository, type :

poetry run halfapi

If you need to launch the test suite (only works if you have pytest installed) :

poetry run pytest

Production

The production server may use different init systems. As our main server is Debian-based, we use systemd services to manage the api server. Find the right service files and configure them properly in order to make your production setup perfect.