我使用Flask在本地服务器上创建了一个Restful API。
我遇到了一些十六进制编码/解码方面的问题。
我创建了一个用于调试问题的函数,代码如下:
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
更新
当我尝试通过request.url获取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是以我想要的方式打印出来的。
但是如何从控制台获取这个URL?这可能吗?
GET
中,但这是不好的做法。从你的示例来看,它应该是一个POST
或PUT
,我会发一个例子。 - RnD