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.13.tar.gz
(19.2 kB
view hashes)
Built Distribution
Close
Hashes for iii_api_helper-0.0.13-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9409595ad3ba2706a9dad743300b9d674938810722d708fa2a5d859144c9f02 |
|
MD5 | c7f6ddc64bee18f266cb754b2466adca |
|
BLAKE2b-256 | 037bda61357b588a203ba759e19870db3287e66d4e08ec43d37b551c44c30cd6 |