我已经用Flask在本地服务器上创建了Restfull API。
我在编码/解码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
更新
当我尝试通过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以我想要的方式打印。
但是如何从控制台获取此信息?有可能吗?
答案 0 :(得分:0)
这是一个如何双向实现的示例,我从URL接收项目ID,因为它只是一个数字,但是名称中有特殊字符,这些字符已从URL中去除,所以唯一的方法是放入在请求正文中。
@projects.route("/<project_id>/configurations/<configuration_id>/rename", methods=['PUT'])
new_name = json.loads(request.data)['name']