Code
flask
from functools import wraps
from flask import Flask, request, jsonify, g
app = Flask(__name__)
def require_api_key(view):
@wraps(view)
def wrapped(*args, **kwargs):
key = request.headers.get("X-API-Key")
if key != "secret":
return jsonify({"error": "unauthorized"}), 401
g.api_key = key
return view(*args, **kwargs)
return wrapped
def log_call(view):
@wraps(view)
def wrapped(*args, **kwargs):
app.logger.info(f"{request.method} {request.path}")
return view(*args, **kwargs)
return wrapped
@app.route("/secure")
@require_api_key
@log_call
def secure():
return jsonify({"ok": True, "key": g.api_key})