• flask-restful的使用


    安装

    pip install flask-restful

    使用

    一个最小的flask-restful

    from flask import Flask
    from flask_restful import Api,Resource
    from flask_restful.reqparse import RequestParser
    app = Flask(__name__)
    api = Api(app)
    
    class HelloWorld(Resource):
        def get(self):
            return {'hello': 'world'}
    
        def post(self):
           
            data ={
                "msg":"post成功"
            }
            return data
    
    api.add_resource(HelloWorld, '/')
    
    if __name__ == '__main__':
        app.run(debug=True)
    run.py

    参数解析

    from flask_restful import Resource
    from flask_restful.reqparse import RequestParser
    
    class ProfileListResource(Resource):   
        def post(self):
            parser = RequestParser()
            parser.add_argument('username', type=str,location='json')
            parser.add_argument('pwd', type=str,location='json')
            parser.add_argument('data',type=list, location='json')
            parser.add_argument('data_dic',type=dict, location='json')
    
            args = parser.parse_args()
            print(args)
            print(type(args))
            username = args.get("username")
            pwd = args.get("pwd")
            data = args.get("data")
            data_dic = args.get("data_dic")
            print(data_dic)
            print(type(data_dic))
    
            return {"code_Post": 200}
    参数解析

    add_argument可以指定这个字段的名字,这个字段的数据类型等。

    • default:默认值,如果这个参数没有值,那么将使用这个参数指定的值。
    • required:是否必须。默认为False,如果设置为True,那么这个参数就必须提交上来。
    • type:这个参数的数据类型,如果指定,那么将使用指定的数据类型来强制转换提交上来的值。
    • choices:选项。提交上来的值只有满足这个选项中的值才符合验证通过,否则验证不通过。
    • help:错误信息。如果验证失败后,将会使用这个参数指定的值作为错误信息。
    • trim:是否要去掉前后的空格。

    输出字段

      对于一个视图函数,你可以指定好一些字段用于返回。以后可以使用ORM模型或者自定义的模型的时候,他会自动的获取模型中的相应的字段,生成json数据,然后再返回给客户端。这其中需要导入flask_restful.marshal_with装饰器。并且需要写一个字典,来指示需要返回的字段,以及该字段的数据类型。

    from flask import Flask, render_template, url_for
    from flask_restful import Api, Resource, reqparse, inputs  # reqparse 类似WTForms来验证提交的数据是否合法 ,inputs验证email,url等数据
    from flask_restful import fields, marshal_with      # fields用于输出字段   marshal_with装饰器关联返回字段信息
    app = Flask(__name__)
    # 用Api来绑定app
    api = Api(app)
    
    
    class ArticleView(Resource):      # 类视图不同于之前继承View,这里需要继承Resource
        resource_fields = {           # 返回字段信息
            'title': fields.String,
            'content': fields.String,
        }
        
        @marshal_with(resource_fields)         # 关联返回字段信息
        def get(self):
            return {'title': 'abcdefg'}
    
    
    api.add_resource(ArticleView, '/article/', endpoint='article')  # 类视图绑定
    
    if __name__ == '__main__':
        app.run(debug=True)
    run.py

    完整flask项目结构

    https://gitee.com/peter_zh/rgzn2003

  • 相关阅读:
    Linux性能监控
    程序员技术练级攻略
    使用 GDB 调试多进程程序
    nginx下面部署fast-cgi和C++【原】
    ROS Learning-024 (提高篇-002) rviz的安装和使用
    ROS Learning-023 (提高篇-001) 准备工作 --- 安装一些必要的软件包
    STM32 C++编程 005 I2c(Soft)类
    Python 网络爬虫 005 (编程) 如何编写一个可以 下载(或叫:爬取)一个网页 的网络爬虫
    设置 PyCharm 软件中 Terminal 窗口 中启动的 python 交互命令的版本
    在PyCharm 软件中设置你的项目 使用的Python版本
  • 原文地址:https://www.cnblogs.com/ppzhang/p/14294575.html
Copyright © 2020-2023  润新知