Flask/Werkzeug a un répartiteur url wsgi phénoménale qui n'est pas regex basée. Par exemple, dans Flask:.
@myapp.route('/products/<category>/<item>')
def product_page(category, item):
pseudo_sql = select details from category where product_name = item;
return render_template('product_page.html',\
product_details = formatted_db_output)
Cela vous obtient ce que vous attendez, c.-à-http://example.com/products/gucci/handbag; c'est une API vraiment sympa. Si vous voulez juste littéraux il est aussi simple que:
@myapp.route('/blog/searchtool')
def search_interface():
return some_prestored_string
Mise à jour: par la question de Muhammad est ici une application compatible wsgi minimale en utilisant 2 utilitaires non regex de Werkzeug - cela prend juste une url, si l'ensemble chemin est juste «/» vous obtenez un message de bienvenue, sinon vous obtenez l'url arrière:
from werkzeug.routing import Map, Rule
url_map = Map([
Rule('/', endpoint='index'),
Rule('/<everything_else>/', endpoint='xedni'),
])
def application(environ, start_response):
urls = url_map.bind_to_environ(environ)
endpoint, args = urls.match()
start_response('200 OK', [('Content-Type', 'text/plain')])
if endpoint == 'index':
return 'welcome to reverse-a-path'
else:
backwards = environ['PATH_INFO'][::-1]
return backwards
vous pouvez déployer que Tornado, mod_wsgi, etc. Bien sûr, il est difficile de battre les belles idiomes de Flask et Bouteille, ou la minutie et la qualité de Werkzeug au-delà de Map
et Rule
.
Est-ce un répartiteur wsgi dans le sens où il transmet les requêtes HTTP à une application wsgi? Ou est-ce la même chose que «bouteille» dans ma réponse, attend des fonctions qui fonctionnent avec le cadre particulier? –
Voir le deuxième lien, section démarrage rapide. Mais oui, vous pouvez utiliser le routage Werkzeug pour la distribution wsgi pure uniquement, vous appelez la méthode 'bind_to_environ' sur l'objet' Map' avec le paramètre wsgi environ de la requête en tant que paramètre dans votre application et vous êtes opérationnel - vous pouvez avoir une application compatible wsgi avec juste 'Map' et' Rule' dans 6 lignes de code. Le truc de Flask est juste un bon ensemble d'utilitaires pour travailler avec ces mêmes objets d'une manière plus transparente. – unmounted