III Common FastAPI base.
Project description
III API base
Usage
Config
The later config will override the previous one.
This table shows the predefined environment variables.
Keyword | Type | Default | Description |
---|---|---|---|
DEBUG |
boolean | false | To set the logging as DEBUG state, you can pass debug=True to application too. |
RELOAD |
boolean | false | To auto reload the FastAPI application, you can pass reload=True to run too. |
APP_NAME |
string | Backend API | The application name use on FastAPI. |
from pathlib import Path
from api_helper.config import load_config
# Load config
load_config(Path(__file__).parent / ".env")
# Load default config in the directory (.env)
load_config(Path(__file__).parent)
FastAPI example
To config the FastAPI by env, read the Config section.
from pathlib import Path
from api_helper import FastAPI, success_response
app: FastAPI = FastAPI(base_folder=Path(__file__).parent)
# Optional to setup sentry
app.setup_sentry("sentry_dsn")
@app.get("/")
def home():
return success_response("Hello, World!")
# Start the app and enjoy
app.run("127.0.0.1", 5000)
# Start the app with OpenAPI, for example
app.run(show_swagger=True)
Use FastAPI with auto-reload
To use the reload method, you need to pass reload=True
and app="main:app"
to the run
method.
If you don't pass them, the reload will not work. See the sample code below.
from pathlib import Path
from api_helper import FastAPI
# Must declared before running into main code block
app: FastAPI = FastAPI(base_folder=Path(__file__).parent.parent)
if __name__ == "__main__":
# Pass the app as a string to uvicorn.run to enable auto-reload
app.run(app="test:app", reload=True)
Custom Logger Format
If you want to customize the Logger format, you can pass log_builder
to the FastAPI object.
The following example shows how to customize the logger format.
See below sample for more information.
from pathlib import Path
from api_helper import FastAPI
from api_helper.config import LoggerBuilder
# To customize the logger format, you can pass the log_builder to FastAPI
log_builder: LoggerBuilder = LoggerBuilder(Path(__file__).parent)
log_builder.formatters = {} # For example, we change the formatter to empty
app: FastAPI = FastAPI(base_folder=Path(__file__).parent, log_builder=log_builder)
# Or if you prefer the default, you can extend the default formatter
# For example, you can change the root level to DEBUG with default formatter
log_builder: LoggerBuilder = LoggerBuilder(Path(__file__).parent, config={"root": {"level": "DEBUG"}})
app: FastAPI = FastAPI(base_folder=Path(__file__).parent, log_builder=log_builder)
# Or pass as parameter start with the `logging_` keyword, it will be passed to the LoggerBuilder
# It is the same as the previous example
app: FastAPI = FastAPI(base_folder=Path(__file__).parent, logging_config={"root": {"level": "DEBUG"}})
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
iii_api_helper-0.0.16a1.tar.gz
(21.0 kB
view hashes)
Built Distribution
Close
Hashes for iii_api_helper-0.0.16a1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | faed6e70d1702054773b6892a3c59fbb0080a6358ae589a0766adea97372e887 |
|
MD5 | 3a5cb6148f7ec5010cdb4793d12bf171 |
|
BLAKE2b-256 | cd5a7b33e269710521d06a058b0a2c6217e508d1c447a6e1a63e39b82824c43f |