2017-08-11 2 views
0

In einer Lesezeichen-App. In Bottle versuche ich einen Link zu erfassen, der an eine URL angehängt wird.Python Bottle.Routes. Erfassen eines Fragezeichens (?)

Aber wenn ich versuche, eine YouTube-URL zu senden, z.

http://myapp.com/bookmark/https://www.youtube.com/watch?v=6ZOPGKFsTzI 

Auch die Route

@route("/bookmark/<url:re:.+>") 
def save(url) : 
    ... 

wird es nicht erfassen.

Es erfasst die https://www.youtube.com/watch aber stoppt bei der?

Irgendwelche Ideen zu einem Muster, um diesem zu entsprechen?

+0

''http://myapp.com/bookmark/https://www.youtube.com/watch?v=6ZOPGKFsTzI'.split ('/bookmark/') [1]' –

+0

Ich verarbeite nicht die Zeichenfolge manuell. Dies ist in Bottle.routes. Das wird für mich hinter den Kulissen getan. Deshalb kann ich zum Beispiel den String nicht transformieren, bevor er in den Regex-Test geht. – interstar

+0

Ihr Beispiel URL ist wohl fehlerhaft. Das Fragezeichen sollte mindestens maskiert sein, um die Argumente von myapps.com von den Argumenten von youtube.com unterscheiden zu können. Einige [nützliche Diskussion ist hier] (https://stackoverflow.com/questions/2322764/whatcharacters-must-be-escaped-in-an-http-query-string) und anderswo. –

Antwort

1

Der? ... Teil wird wahrscheinlich nicht als Teil der URL vom Bottle-Framework betrachtet, sondern als Teil der query string.

Sie können eine Route für das Lesezeichen /.* festlegen und dann auf das Anforderungsobjekt zugreifen, um die vollständige Zeichenfolge abzurufen.

+0

Sie haben die richtige Idee, aber um genau zu sein: Das Fragezeichen ist in der Tat ein Teil der URL; Es grenzt die _path_-Komponente von der _query string_-Komponente ab. –

Verwandte Themen