Я сталкиваюсь с очень странной проблемой в спецификации 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]>}