Jeroboam¶
The main application class.
Jeroboam¶
class Jeroboam(Flask)
A Flask subclass that adds request parsing, response validation, and OpenAPI documentation.
Constructor¶
Jeroboam(*args, **kwargs)
Takes the same parameters as Flask. See Flask documentation for details.
On initialization, Jeroboam loads its configuration from JeroboamConfig (which reads environment variables) and merges it into app.config. Jeroboam-specific settings are configured via app.config after construction:
JEROBOAM_REGISTER_OPENAPI(bool): Register OpenAPI endpoints. Default:TrueJEROBOAM_REGISTER_ERROR_HANDLERS(bool): Register validation error handlers. Default:TrueJEROBOAM_OPENAPI_URL(str): Path to interactive docs. Default:/docsJEROBOAM_TITLE(str): API title in OpenAPI schema. Default:NoneJEROBOAM_VERSION(str): API version. Default:0.1.0JEROBOAM_DESCRIPTION(str): API description. Default:None
Methods¶
route¶
def route(
rule: str,
**options
) -> Callable
Register a view function for a given URL rule. Works like Flask’s route() decorator but adds request/response validation.
Example:
@app.route("/items", methods=["GET"])
def list_items():
return [{"id": 1, "name": "Item 1"}]
get, post, put, patch, delete, options, head¶
def get(rule: str, **options) -> Callable
def post(rule: str, **options) -> Callable
def put(rule: str, **options) -> Callable
def patch(rule: str, **options) -> Callable
def delete(rule: str, **options) -> Callable
def options(rule: str, **options) -> Callable
def head(rule: str, **options) -> Callable
Shortcuts for HTTP methods. Each works like Flask’s method decorators but with validation.
Example:
@app.get("/wines/<int:wine_id>")
def get_wine(wine_id: int):
return {"id": wine_id}
@app.post("/wines")
def create_wine(name: str, vintage: int):
return {"name": name, "vintage": vintage}
add_url_rule¶
def add_url_rule(
rule: str,
endpoint: str = None,
view_func: Callable = None,
**options
) -> None
Register a URL rule with a view function. Works like Flask’s add_url_rule().
Properties¶
jeroboam_config¶
@property
def jeroboam_config(self) -> dict
Returns Jeroboam-specific configuration.
Blueprint¶
class Blueprint(Flask.Blueprint)
A Blueprint subclass that adds request parsing and response validation.
Works exactly like Jeroboam but for organizing routes into modules. Use blueprint.route(), blueprint.get(), etc. the same way as Jeroboam.
Example:
from flask_jeroboam import Blueprint
wines_bp = Blueprint("wines", __name__)
@wines_bp.get("/wines")
def list_wines():
return []
app.register_blueprint(wines_bp)