我在Flask的本地服务器上创建了一个Restful API。 我在编码/解码德克萨斯时遇到了一些麻烦。
我创建了一个调试我的问题的函数,它是:
class test_encoding(Resource) :
def get(self,val):
return{'data': val}
api.add_resource(test_encoding,'/testencoding/<val>')
例如,如果我在Chrome中用作请求:
.../testencoding/%23
我得到这个回复(hexas编码):
{"data": "#"}
但我希望保留我的字符串,因为它是用Chrome编写的,使用%
:
{"data": "%23"}
我知道我必须使用编码和解码,但我很丢失。你能帮助我吗 ?
在此先感谢您的帮助, LCMa
UPDATE
当我试图通过request.url获取url并返回相同的'#'而不是'%23'时,我理解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接收项目ID,因为它只是一个数字,但名称中包含从URL中删除的特殊字符,因此唯一的方法是将其放入请求中身体。
@projects.route("/<project_id>/configurations/<configuration_id>/rename", methods=['PUT'])
new_name = json.loads(request.data)['name']