фляга - неправильная кодировка URL - PullRequest
1 голос
/ 07 октября 2019

Я сталкиваюсь с очень странной проблемой в спецификации Flask и flask-rest-jsonapi.

Если я отправляю ниже URL с помощью почтальона, я получаю очень странное поведение: -

Не работает URL: -

http://127.0.0.1:5000/v1/recordings?filter=[
  {
    "name": "rtags",
    "op": "any",
    "val": {
      "name": "tag",
      "op": "ilike",
      "val": "%car%"
    }
  }
]

В закодированном URL CA заменяется различными символами% EF% BF% BD.

http://127.0.0.1:5000/v1/recordings?filter=%5B%0A++%7B%0A++++%22name%22%3A+%22rtags%22%2C%0A++++%22op%22%3A+%22any%22%2C%0A++++%22val%22%3A+%7B%0A++++++%22name%22%3A+%22tag%22%2C%0A++++++%22op%22%3A+%22ilike%22%2C%0A++++++%22val%22%3A+%22**%EF%BF%BD**r%25%22%0A++++%7D%0A++%7D%0A%5D

Однако, если я отправлю вместо машины какое-то другое слово, например трафик, то закодированная строка URL-адреса подойдет.

Рабочий URL: -

http://127.0.0.1:5000/v1/recordings?filter=[
  {
    "name": "rtags",
    "op": "any",
    "val": {
      "name": "tag",
      "op": "ilike",
      "val": "%traffic%"
    }
  }
] 

например,

"http://127.0.0.1:5000/v1/recordings?filter=%5B%0A++%7B%0A++++%22name%22%3A+%22rtags%22%2C%0A++++%22op%22%3A+%22any%22%2C%0A++++%22val%22%3A+%7B%0A++++++%22name%22%3A+%22tag%22%2C%0A++++++%22op%22%3A+%22ilike%22%2C%0A++++++%22val%22%3A+%22%25**traffic**%25%22%0A++++%7D%0A++%7D%0A%5D"

Также, если я поместил точку останова в файл app.py Flask, я получу первые два символа в виде заглавной буквы "CAr" вместо слова "car", которое я отправил в параметре строки запроса.

<Request 'http://127.0.0.1:5000/v1/recordings?filter=%5B%0A%20%20%7B%0A%20%20%20%20%22name%22:%20%22rtags%22,%0A%20%20%20%20%22op%22:%20%22any%22,%0A%20%20%20%20%22val%22:%20%7B%0A%20%20%20%20%20%20%22name%22:%20%22tag%22,%0A%20%20%20%20%20%20%22op%22:%20%22ilike%22,%0A%20%20%20%20%20%20%22val%22:%20%22%CAr%25%22%0A%20%20%20%20%7D%0A%20%20%7D%0A%5D' [GET]>}
...