Переполнена проблема API с шестнадцатеричным кодированием / декодированием - PullRequest
4 голосов
/ 12 марта 2019

Я создал Restfull API на локальном сервере с Flask.
У меня возникают некоторые проблемы с кодированием / декодированием hexas.

Я создал функцию для отладки моей проблемы:

class test_encoding(Resource) :
    def get(self,val):
        return{'data': val}

api.add_resource(test_encoding,'/testencoding/<val>')

Например, если я использую в качестве запроса в Chrome:

.../testencoding/%23

Я получаю этот ответ (в шестнадцатеричной кодировке):

{"data": "#"}

Но я хочусохрани мою строку, как было написано в Chrome, с %:

{"data": "%23"}

Я знаю, что мне нужно играть с кодировкой и декодированием, но я совершенно заблудился.Можете ли вы мне помочь?

Заранее спасибо за помощь,
LCMa

ОБНОВЛЕНИЕ

Как я пытался получить URL-адрес благодаряrequest.url и он вернул то же самое «#» вместо «% 23», я понял, что URL автоматически изменяется.Моя идея состоит в том, чтобы затем вернуть URL-адрес запроса, который показан в приглашении:

(base) C:\Users\maell\PycharmProjects\Serveur>python app.py
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [13/Mar/2019 10:02:53] "GET /testencoding/%23 HTTP/1.1" 200 -

Мы видим, что здесь, URL-адрес печатается так, как я хочу.
Но какполучить это из консоли?Возможно ли это?

1 Ответ

0 голосов
/ 13 марта 2019

Вот пример того, как вы можете сделать это обоими способами, я получаю идентификатор проекта из URL, потому что это просто число, но имя содержит специальные символы, которые были удалены из URL, так что единственный способ это вставитьв теле запроса.

@projects.route("/<project_id>/configurations/<configuration_id>/rename", methods=['PUT'])
    new_name = json.loads(request.data)['name']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...