Flask-Mime is Flask extension that enables applications to dispatch requests based on Accept header of it.
Install the extension with the following command:
$ pip install Flask-Mime
Create a Mime object and define routes with MIME types:
from flask import Flask, render_template, jsonify
from flask_mime import Mime
app = Flask(__name__)
mimetype = Mime(app)
@mimetype('text/html')
@app.route('/')
def index_html():
return render_template('index.html')
@mimetype('application/json')
@app.route('/')
def index_json():
return jsonify(data={'content': 'index'})
Each requests are dispatched depending on the value of Accept header, even though they have same request path:
client = app.test_client()
client.get('/', headers={'Accept': 'text/html'}) # returns html
client.get('/', headers={'Accept': 'application/json'}) # returns json
Note that MIME type based request dispatching mechanism may have negative influence for some applications, for example, which has a cache system.