Jak mohu přepsat metody HTTP pro PUT a DELETE v baňce modulu?

hlasů
7

Mám jen těžko se snaží změnit předmět žádosti Flask než dojde směrování.

My API modul (není můj celý baňky app) závisí na tom, předstírá PUT a DELETE zasláním zvláštní záhlaví. Musím se podívat na obsah „-Method“ hlavičku a upravit objekt Baňka Request tedy před baňky dělá jeho směrování.

Jedná se o krátký, pythonic explicitní kód bych chtěl pracovat:

@api.before_request
def method_scrubbing():
    if request.headers.has_key('-Method'):
        method = request.headers['-Method'].upper()
        tagalog.log(in before_request, -Method = {}.format(method), 'force')
        if method not in ['PUT', 'DELETE']:
            raise ApiMethodException(method)
        else:
            request.method = method

... ale mám chybu „jen pro čtení vlastnost“ z Werkzeug: http://drktd.com/74yk

Mám se zdají příspěvek Armin na adrese http://flask.pocoo.org/snippets/38/ , ale zdá se, že app-široký (nejsou specifické pro modul).

Položena 26/05/2011 v 20:30
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
6

Werkzeug je předpoklad, že se žádost měnit pouze v WSGI middlewaru nebo před Werkzeug má přístup k údajům. Důvodem je, že tento způsob Werkzeug nemusí monitorovat WSGI prostředí, aby zjistil, zda by měl znehodnotit cache nebo změnit chování.

V tomto konkrétním případě by mohla být úspěšná takže pokud jste pečlivě změnou podkladové WSGI prostředí:

request.environ['REQUEST_METHOD'] = 'something'

Po tom request.methodby měl ukázat „něco“ a chování by se mělo změnit tvořit rozebrat. Nezkoušel jsem to a nevím, jestli to bude fungovat. Osobně bych napsat middleware, který dělá přepis pro celou aplikaci, nebo dělá nějaký jednoduchý prefix URL shodu pro daný chování pravděpodobně.

Odpovězeno 26/05/2011 v 21:11
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more