我知道是否可以从不同的路径级别获取request.args。
目前我只能将request.args用于一个级别:
scp youfile.txt user@192.168.10.2:project/
或
my_ip:my_port/modules/?name=git
my_ip:my_port/modules/?id=0
但在我的模块模型中,我有行动,我想以同样的方式采取行动:
@module_blueprint.route('/', methods=['GET'])
def get_modules():
if len(request.args) == 0:
modules = Module.query.all()
return jsonify(modules=list_to_json(modules))
try:
module = Module.query.filter_by(**request.args.to_dict()).first()
except InvalidRequestError as i:
return json_response(400, "InvalidRequestError : {}".format(i.args))
if module is None:
return json_response(204, "")
return jsonify(module=module.serialize)
但我不知道该怎么做。
如果我尝试
my_ip:my_port/modules/?name=git/actions/?id=0
request.args只保留动作路径后的args
@module_blueprint.route('/actions', methods=['GET'])
此路径的request.args为空
感谢您的帮助。
答案 0 :(得分:0)
注意:请求参数始终附加在请求URL的末尾。 ?之后的所有内容都被视为URI参数。因此,像
这样的网址my_ip:?my_port /模块/名称= GIT中/动作/ ID = 0
是不可能的,因为它违反了上述指南。
在这种情况下,将信息作为参数传递并不会带来任何好处。因此,以下是更好的做事方式:
按名称提取模块:
@module_blueprint.route('/<module_name>', methods=['GET'])
用于获取该模块的操作:
@module_blueprint.route('/<module_name>/action/<int:action_id>', methods=['GET'])
在这种情况下,使用请求参数更有意义。
按名称提取模块:
@module_blueprint.route('/', methods=['GET'])
用于获取该模块的操作:
@module_blueprint.route('/actions', methods=['GET'])