@app.route('/')
def index():
resp = make_response("Record not found", 400)
resp.headers['X-Something'] = 'A value'
return resp
from flask import Flask, abort
from auth import AuthError
# depending on the error either 400 or any
#just work with the following
@app.errorhandler(404)
def resource_not_found(error):
return jsonify({
"success": True,
"error": 404,
"message": "Resource not found"
}), 404
##This works for any type of status code error
#You'll follow the same steps just change the error value and message :)
### also for Auth error.
@app.errorhandler(AuthError)
def AuthError(error):
"""Need to return JSON and we'll have to get a response"""
response = jsonify(error)
response.status_code = error.status_code
return response
from flask import json
from werkzeug.exceptions import HTTPException
@app.errorhandler(HTTPException)
def handle_exception(e):
"""Return JSON instead of HTML for HTTP errors."""
# start with the correct headers and status code from the error
response = e.get_response()
# replace the body with JSON
response.data = json.dumps({
"code": e.code,
"name": e.name,
"description": e.description,
})
response.content_type = "application/json"
return response
from werkzeug.exceptions import HTTPException
@app.errorhandler(Exception)
def handle_exception(e):
# pass through HTTP errors
if isinstance(e, HTTPException):
return e
# now you're handling non-HTTP exceptions only
return render_template("500_generic.html", e=e), 500
from waitress import serve
# app.run(host='0.0.0.0', port=port) # <---- REMOVE THIS
# serve your flask app with waitress, instead of running it directly.
serve(app, host='0.0.0.0', port=port) # <---- ADD THIS