2016-08-03 8 views
0

Bei der Verwendung der Routes Bibliothek möchte ich redirect bestimmte URLs. Die Dokumentation sagt kann es wie folgt erreicht werden:Mapping URL-Argumente in Python Requests Umleitung

map.redirect("/legacyapp/archives/{url:.*}", "/archives/{url}") 

Und ich bin tatsächlich in der Lage, diesen Weg zu einer URL zu umleiten. Ich bin jedoch nicht in der Lage, die URL-Argumente von der Anfrage zur Weiterleitung abzubilden/zu analysieren. Mein Code sieht wie folgt aus:

app.mapper.redirect("/repository/status_for_installed_repository{url:.*}", "/api/repositories/check_updates/{url}") 

und wenn die App diese übergeben wird:

curl -L 'FQDN/repository/status_for_installed_repository?owner=qqqqqq&changeset_revision=e5f6ced3e91f&name=asdsadsadas' 

es leitet mich zu

GET /api/repositories/check_updates 

aber ich kann nicht einen Weg, wie man erhalten die Werte finden von ownername und changeset_revision.

Ich erwarte, dass dies ein häufiger Anwendungsfall ist, da Sie in der Regel keine Argumente verlieren wollen, wenn Sie umleiten?

Jede Hilfe wird sehr geschätzt. Vielen Dank.

Antwort

0

endete ich deren Umsetzung wie folgt zusammen:

def _map_redirects(app): 
    """ 
    Add redirect to the Routes mapper and forward the received query string. 
    Subsequently when the redirect is triggered in Routes middleware the request 
    will not even reach the webapp. 
    """ 
    def forward_qs(environ, result): 
     qs_dict = urlparse.parse_qs(environ['QUERY_STRING']) 
     for qs in qs_dict: 
      result[ qs ] = qs_dict[ qs ] 
     return True 

    app.mapper.redirect("/repository/status_for_installed_repository", "/api/repositories/check_updates/", _redirect_code="301 Moved Permanently", conditions=dict(function=forward_qs)) 
    return app 
Verwandte Themen