|
Flask中如何获取不同请求方式的参数前言一、get请求下1.1、路径中带有参数1.1.1、postman示例1.1.2、flask代码实现1.1.3、注意事项1.2、在url后边带有参数1.2.1、postman示例1.2.2、flask代码实现二、post请求下2.1、form-data格式2.1.1、postman示例2.1.2、flask代码实现2.2、www-form-urlendoded格式2.2.1、postman示例2.2.2、flask代码实现2.3、json传参格式2.3.1、postman示例2.3.2、flask代码实现2.3.3、注意事项2.4、headers传参格式2.4.1、postman示例2.4.2、flask代码实现前言前面基本上固定了项目的框架,接下来就是实现各个模块的功能。基于现在主流前后端交互的api,那么就来看看如何使用flask实现参数接受的。这里是我常用的方式,关于更多使用方式,请点击这里去文档查看更多一、get请求下1.1、路径中带有参数1.1.1、postman示例1.1.2、flask代码实现@blog_base_blueprint.route('/path_posts/',methods=['GET'])defget_post_path(resource_id):resource_listsist[models.Resource]=(models.Resource.query.filter(models.Resource.id==resource_id).all())returnjsonify({'code':0,'msg':'success','data':{"resource_list":[resource.to_format()forresourceinresource_lists]}})123456789101112131.1.3、注意事项在注册路由的时候一定要写上参数和参数的类型定义方法的时候一定写上参数名,这样才能直接使用1.2、在url后边带有参数当参数以params形式传递,也就是参数以?a=x&b=y的形式显示在url中访问的形式1.2.1、postman示例1.2.2、flask代码实现通过request.args.get(‘key’)和request.values.get(‘key’)来接收参数@blog_base_blueprint.route('/posts',methods=['GET'])defget_posts():current_app.logger.info('获取列表')resource_id=request.args.get('resource_id',2)resource_listsist[models.Resource]=(models.Resource.query.filter(models.Resource.id==resource_id).all())returnjsonify({'code':0,'msg':'success','data':{"resource_list":[resource.to_format()forresourceinresource_lists]}})12345678910111213141516二、post请求下前后端API交互时,常见的还是post的请求方式,且常用的有form-data或x-www-form-urlendoded形式,还有为json数据的body体2.1、form-data格式2.1.1、postman示例2.1.2、flask代码实现使用request.form获取@blog_base_blueprint.route('/add_post',methods=['POST','GET'])defcreate_or_update_resource():title=request.form.get('title')json_data=request.formreturnjsonify({'json_data':json_data,'title':title,})123456782.2、www-form-urlendoded格式2.2.1、postman示例2.2.2、flask代码实现使用request.form接收参数#测试www-form-urlendoded格式@blog_base_blueprint.route('/test1',methods=['POST'])deftest1():title=request.form.get('title2')json_data=request.formid=request.values.get('id')returnjsonify({'json_data':json_data,'title':title,'id':id,})12345678910112.3、json传参格式2.3.1、postman示例2.3.2、flask代码实现使用request.get_json()和request.get_data()实现,使用方法参考点击查看使用文档#测试json格式@blog_base_blueprint.route('/test1_json',methods=['POST'])deftest1_json():json_data1=request.get_data(as_text=True)print(json_data1)json_data2=request.get_json()title=request.json.get('title')returnjsonify({'json_data1':json_data1,'json_data2':json_data2,'title':title,})1234567891011122.3.3、注意事项根据结果可以看到:get_data()方法,获取到的是未经处理的原始数据,如果数据格式是json的,则取得是json字符串,排序和请求参数一致get_json()方法,将请求参数做了处理,得到字典格式,因此排序会打乱,依据字典排序规则。2.4、headers传参格式很多时候,为了安全性,接口交互时会传递token,这时候是使用request.headers来接收headers里的token的2.4.1、postman示例2.4.2、flask代码实现使用request.headers实现@blog_base_blueprint.route('/add_post',methods=['POST','GET'])defcreate_or_update_resource():token=request.headers.get('Authorization','')title=request.form.get('title')#json_data=request.formreturnjsonify({'token':token,})12345678910
|
|