编码/解码hexas的Restful API问题

问题描述 投票:4回答:1

我在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 -

我们在这里看到,网址是按照我想要的方式打印的。 但是如何从控制台获得这个?可能吗 ?

python flask
1个回答
0
投票

以下是一个如何以两种方式执行此操作的示例,我从URL接收项目ID,因为它只是一个数字,但名称中包含从URL中删除的特殊字符,因此唯一的方法是将其放入请求中身体。

@projects.route("/<project_id>/configurations/<configuration_id>/rename", methods=['PUT'])
    new_name = json.loads(request.data)['name']
© www.soinside.com 2019 - 2024. All rights reserved.