我在web2py中有一些RESTful API调用,它们接受JSON文件。我使用 curl 通过命令行进行调用,如下所示:
curl -H "Content-Type: application/json" --data @mydata.json https://mywebsite/doWork
在我的web2py控制器中,我设置了它以读取POST请求。当我通过返回来检查request.vars时,它包含完整的JSON数据,但request.vars的类型是:类'gluon.storage.Storage'。
我需要控制器中字符串格式的数据。但是,如果我做str(request.vars(,web2py会在我的数据前面附加一个存储标签。
@request.restful()
def doWork():
def POST(*args, **vars):
return(request.vars)
return locals()
假设 mydata.json 文件很简单,如下所示:
{ "键":"值" }
对 POST 的请求将返回 {"key": "value"} 作为 gluon.storage.Storage 对象。
如果我将行 return(request.vars( 更改为 return(str(request.vars((,则输出现在为:
如何将此 request.vars 转换为字符串,而无需将存储标记附加到前面,并将双引号更改为单引号?
如果你想vars
转换回JSON,你可以使用Pythonjson
库或只使用response.json
:
return response.json(vars)
或者,您可以将.json
扩展添加到请求中,并直接返回vars
:
return vars
提出以下要求:
curl -H "Content-Type: application/json" --data @mydata.json https://mywebsite/doWork.json
在这种情况下,web2py 会自动将响应转换为 JSON。