API: blueprint flask-smorest + endpoint /health (#78)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+20
-1
@@ -1 +1,20 @@
|
||||
# decp.info — API privée. init_api(server) sera ajouté Task 6.
|
||||
from flask_smorest import Api
|
||||
|
||||
from src.api import routes
|
||||
|
||||
|
||||
def init_api(server) -> None:
|
||||
"""Enregistre le blueprint d'API privée sur le serveur Flask."""
|
||||
server.config.setdefault("API_TITLE", "decp.info API")
|
||||
server.config.setdefault("API_VERSION", "v1")
|
||||
server.config.setdefault("OPENAPI_VERSION", "3.0.3")
|
||||
server.config.setdefault("OPENAPI_URL_PREFIX", "/api/v1")
|
||||
server.config.setdefault("OPENAPI_JSON_PATH", "openapi.json")
|
||||
server.config.setdefault("OPENAPI_SWAGGER_UI_PATH", "swagger")
|
||||
server.config.setdefault(
|
||||
"OPENAPI_SWAGGER_UI_URL",
|
||||
"https://cdn.jsdelivr.net/npm/swagger-ui-dist/",
|
||||
)
|
||||
|
||||
api = Api(server)
|
||||
api.register_blueprint(routes.bp)
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
from flask_smorest import Blueprint
|
||||
|
||||
bp = Blueprint(
|
||||
"api_v1",
|
||||
"api_v1",
|
||||
url_prefix="/api/v1",
|
||||
description="API privée decp.info — accès tabulaire aux marchés publics.",
|
||||
)
|
||||
|
||||
|
||||
@bp.route("/health")
|
||||
def health():
|
||||
"""Sonde de santé, sans authentification."""
|
||||
return {"status": "ok"}
|
||||
@@ -0,0 +1,16 @@
|
||||
from flask import Flask
|
||||
|
||||
from src.api import init_api
|
||||
|
||||
|
||||
def _make_app():
|
||||
app = Flask(__name__)
|
||||
init_api(app)
|
||||
return app
|
||||
|
||||
|
||||
def test_health_returns_ok_without_auth():
|
||||
app = _make_app()
|
||||
resp = app.test_client().get("/api/v1/health")
|
||||
assert resp.status_code == 200
|
||||
assert resp.get_json() == {"status": "ok"}
|
||||
Reference in New Issue
Block a user