我在烧瓶中使用flask_restful
我的代码如下:
from flask_restful import Resource, reqparse
apilink_parser = reqparse.RequestParser()
apilink_parser.add_argument('provider_id', type=int,required=True)
apilink_parser.add_argument('name', type=str, required=True)
apilink_parser.add_argument('func_id', type=int)
apilink_parser.add_argument('method', type=str)
apilink_parser.add_argument('url', type=str)
apilink_parser.add_argument('parameter',type=list)
apilink_parser.add_argument("expectreturn", type=list)
@marshal_with(apilink_fields)
def post(self):
args = apilink_parser.parse_args()
print(args)
# user owns the task
task = APILink.create(**args)
return task, 201
我的json发布数据如:
{
"name":"riskiqwhois",
"provider_id":1,
"func_id":1,
"url":"myurl",
"parameter":["query"], //******//
"expectreturn":[],
"method":"post"
}
但是当我打印arrgs时,结果是:
{
'provider_id': 1,
'name': 'riskiqwhois',
'func_id': 1,
'method': 'post',
'url': 'myurl',
'parameter': ['q', 'u', 'e', 'r', 'y'], //******//
'expectreturn': None
}
我想要 你可以看到我想要的参数是字符串列表,它只是一个名为" query"的元素,但是转换到数据库的真实参数是[' q',' u&# 39;,' e',' r',' y'],如何使参数是字符串列表而不是char列表?如何确保数据是列表(字符串)?
答案 0 :(得分:1)
您可以通过在请求解析器中添加 action =“append”来解决此问题 如下所示
apilink_parser.add_argument('parameter',type=str,action="append")
apilink_parser.add_argument("expectreturn", type=list,action="append")
这将使您返回输出
{
'provider_id': 1,
'name': 'riskiqwhois',
'func_id': 1,
'method': 'post',
'url': 'myurl',
'parameter': ['query'],
'expectreturn': None
}
答案 1 :(得分:1)
好吧,您忘记设置action="append"
,应该从type = list更改为type = str。
如果不是这样,您仍然会得到类似[['q','u','e','r','y']]]的结果。
...
apilink_parser.add_argument('parameter',type=str, action='append')
apilink_parser.add_argument("expectreturn", type=str, action='append')
答案 2 :(得分:0)
我认为原因是你没有设置location(json)。例如:
apilink_parser.add_argument('parameter', type=list, location='json')
另请确保您已发送标头Content-Type: application/json
希望这有帮助。