この正規表現ベースのディスパッチャーを見つけましたが、実際にはリテラル プレフィックス文字列のみを使用するものを使用したいと考えています。そのようなものは存在しますか?
書くのが難しくないことはわかっていますが、車輪の再発明はしたくありません。
この正規表現ベースのディスパッチャーを見つけましたが、実際にはリテラル プレフィックス文字列のみを使用するものを使用したいと考えています。そのようなものは存在しますか?
書くのが難しくないことはわかっていますが、車輪の再発明はしたくありません。
Flask / Werkzeugには、正規表現ベースではない驚異的な wsgi url ディスパッチャーがあります。たとえば、フラスコでは次のようになります。
@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)
これにより、期待どおりの結果が得られます。つまり、http://example.com/products/gucci/handbagです。それは本当に素晴らしい API です。リテラルだけが必要な場合は、次のように簡単です。
@myapp.route('/blog/searchtool')
def search_interface():
return some_prestored_string
更新:ここでの Muhammad の質問によると、Werkzeug の 2 つの非正規表現ユーティリティを使用する最小限の wsgi 準拠のアプリです。パス全体が単に '/' の場合は、ウェルカム メッセージが表示されます。それ以外の場合は、URL が逆になります。
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
これは、Tornado、mod_wsgi などで展開できます。もちろん、Flask と Bottle の優れたイディオム、または Werkzeug の完全性と品質に勝るものはMap
ありませんRule
。
あなたが説明したものとは正確には異なりますが、bottleを使用することでニーズを満たすことができます。route
デコレータはより構造化されています。Bottle は WSGI アプリをホストしませんが、WSGI アプリとしてホストすることはできます。
例:
from bottle import route, run
@route('/:name')
def index(name='World'):
return '<b>Hello %s!</b>' % name
run(host='localhost', port=8080)