105 lines
1.9 KiB
Markdown
105 lines
1.9 KiB
Markdown
# 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](https://github.com/collorg/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](https://github.com/halfAPI/halfapi_sample_project)
|
||
that helps you to build your own domain.
|
||
|
||
|
||
## Development
|
||
|
||
@TODO
|