Restfull API问题与编码/解码六边形

时间:2019-03-12 15:13:48

标签: python flask

我已经用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以我想要的方式打印。
但是如何从控制台获取此信息?有可能吗?

1 个答案:

答案 0 :(得分:0)

这是一个如何双向实现的示例,我从URL接收项目ID,因为它只是一个数字,但是名称中有特殊字符,这些字符已从URL中去除,所以唯一的方法是放入在请求正文中。

@projects.route("/<project_id>/configurations/<configuration_id>/rename", methods=['PUT'])
    new_name = json.loads(request.data)['name']