Декодирование компонента URI в приложении Flask - PullRequest
0 голосов
/ 01 октября 2019

Я пишу приложение Flask. В этом я раскрыл API-интерфейс, подобный следующему:

@app.route("/<project>/<changeId>/<change>/<patch>/<branch>")
def home(project, changeId, change, patch, branch):
    ...................

Теперь я вызываю этот API из моего кода переднего плана.

Здесь значение переменной проекта, которое я получу, будет закодировано в URL (https://www.w3schools.com/jsref/jsref_encodeuricomponent.asp),), так что если проект в Javascript будет A/B, он будет преобразован в A%B

Теперь я хочу преобразовать его обратно в A/B в своем приложении для колб. Как я могу это сделать?

Я пытался посмотреть на это: https://blog.revathskumar.com/2011/10/python-url-encoding-and-decoding.html

Но это не работает с тем, чего я хочу достичь.

Редактировать:

Итак, я сделал следующее:

из urllib import parse

@app.route("/<project>/<changeId>/<change>/<patch>/<path:branch>")
def home(project, changeId, change, patch, branch):

app.logger.info('project is %s, changeId is %s, change is %s, patch is %s, branch is %s', project, changeId, change, patch, branch)

    projectnew = parse.unquote(project)

app.logger.info('project is %s, changeId is %s, change is %s, patch is %s, branch is %s', projectnew, changeId, change, patch, branch)

Теперь, как ни странно, когда я смотрю на строки журнала, OP для проекта одинакова (A) в обоих случаях, даже если я передаю закодированную строку.

Например, значение получения проектапередается что-то вроде: A%2FB.

Выход после разбора должен быть project = A/B, тогда как в обоих случаях OP равен project = A

Я что-то не так делаюздесь

1 Ответ

0 голосов
/ 01 октября 2019

В Python3:

>>> from urllib import parse
>>> parse.unquote('https%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab')
'https://w3schools.com/my test.asp?name=ståle&car=saab'

В Python2

>>> import urllib
>>> urllib.unquote('https%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab')
'https://w3schools.com/my test.asp?name=st\xc3\xa5le&car=saab'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...