Flask---RESTful

13 篇文章 0 订阅

RESTful:

配置:

在urls_apis_v1.py中:
#导包
from flask_restful import Api
#实例化Api
api = Api()
#写一个注册api的函数
def init_api(app):
    api.init_app(app)

为了防止循环引用所以就不在__init__()中注册

在__init__.py中:
#导包
from myapp.urls_apis_v1 import init_api
def create_app(env_name):
  	。。。。。。
  	#注册 
    init_api(app)
   
    return app

使用:

在api_v1.py中:
#导包
from flask_restful import Resource

class Addadd(Resource):
	#请求方式相关的函数
    def get(self):
        return "ok"
在urls_apis_v1.py中:
from flask_restful import Api
#导包
from myapp.apis_v1 import *

api = Api()
def init_api(app):
    api.init_app(app)
#给这个类创建一个路由    
api.add_resource(Addadd, "/addadd")

使用get请求访问就可以访问到ok

输出字段样式:

在apis_v1.py中:

class NewOneApi(Resource):
	#调用样式
    @marshal_with(one_fields)
    def get(self, *args, **kwargs):
        id = int(request.args.get("id", 1))
        news = News.query.get_or_404(id)
        return news

@marshal_with(样式名)

在fields_api.py中:
from flask_restful import fields
#整个是个字典
one_fields = {
    "id": fields.Integer,
    #给title改名为name
    "name": fields.String(attribute="title"),
    #返回字符串,默认是lalala
    "hehe": fields.String(default="lalala")
}
two_fields = {
    "name": fields.String(default="tom"),
    #返回一个列表,里面是字符串
    "hobby": fields.List(fields.String)
}
three_fields = {
    "code": fields.Integer(default=1),
    "msg": fields.String(default="ok"),
    #返回一个字典,里面包含one_fields的内容数据
    "data": fields.Nested(one_fields)
}


four_fields = {
    "code": fields.Integer(default=1),
    "msg": fields.String(default="ok"),
    #返回一个列表,里面是个字典,里面又包含one_fields的内容数据
    "data": fields.List(fields.Nested(one_fields))
}
#     "data":[
#         {
#             "name":"震惊6下课是不可能",
#             "hehe":"lalala",
#             "id":6
#         },
#         {
#             "name":"震惊7下课是不可能",
#             "hehe":"lalala",
#             "id":7
#         }
#     ],
#     "code":2,
#     "msg":"OK"
# }
对原有fields的修改:
four_fields = three_fields #先赋值
four_fields["data"] = fields.List(fields.Nested(one_fields)) #再修改类型
four_fields.pop("msg")  #把不需要字段 弹出去
four_fields["hehe"] = fields.String

four_field和three_fields实质是个字典,可以用字典的增删改查方法。

解析参数:

在apis_v1.py中:
class FiveApi(Resource):
    def get(self):
    	#返回一个参数列表
        my_args = my_params.parse_args()
       	#应该是个对象(关于参数)
        print(type(my_params))
        #返回一个参数列表
        print(my_args)
        return {"msg": "ok"}
在args_apis_v1.py中:
#导包
from flask_restful import reqparse
#实例化
my_params = reqparse.RequestParser()
#添加参数
my_params.add_argument("name", dest="my_name")
my_params.add_argument("id", type=int, required=True, help="必填")
my_params.add_argument("hobby", required=True, action="append")

约束:

​ type 指定类型

​ required 当指定成True的是 说明此参数是必填项

​ location 参数解析的位置 值有form ages cookies headers files等等

​ help 当解析出错的时候的提示文字

​ choices 参数值的约束

​ action=“append” 可以解析获得参数名对应多个值

​ dest=“my_name” 给参数起别名

解析器继承:

#复制
three_args = my_params.copy()
#替换
three_args.replace_argument("id",required=True, help="新的")
#移除
three_args.remove_argument("hobby")
#添加
three_args.add_argument("age", required=True, type=int)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值