flask-restful:
我他么的,蓝图最终还是不能在restful中使用。。不过也不需要蓝图来使用。。一样可以拆分为多个,但是不能像java一样,一个函数响应两个访问方法。
在新建立一个api类,继承自Resource。在里面写 get/post方法
然后通过
api.add_resource(HelloResource,'/hello')
来写下来路由。
flask-restless:
flask-rest-jsonapi:
"""JSON , Respons
单个对象的格式:
{
"status" :200,
"meg" : "ok",
"data" : {
"property":"value",
"property":"value",
"property":"value",
}
}
多个对象的格式:
{
"status" :200,
"meg" : "ok",
"data" : [
{
"property":"value",
"property":"value",
"property":"value",
},
{
"property":"value",
"property":"value",
"property":"value",
},//json object
{
"property":"value",
"property":"value",
"property":"value",
}//json object
]
}
"""
代码中也有记下:
data:object是不能够使用的,会报错。对象不能json序列化
解决方案:使用格式化工具
例如:
goods_fields = {
'g_name' : fields.String,
'g_price' : fields.Float
}
嵌套使用:
goods_data_fields = {
'status': fields.Integer,
'meg' : fields.String,
'data' : fields.Nested(goods_fields)
}
如果某一个字段写在格式模版里面,但是传入数据对应起来里面没有这个字段的,那么默认为null
如果模版字段少于数据,那么只显示模版格式字段
总而言之,以格式模版为主。
get goods List:使用fields.List()
例如:
goodsList_data_fields = {
'status': fields.Integer,
'meg': fields.String,
'data': fields.List(fields.Nested(goods_fields))
}
'name' : fields.String(attribute='g_name')
模版指定默认值,default_value: default=‘xxx’
fields:
delete 方法,删除
put 方法,更新
patch 方法,差量更新,没有传的值,从查到的值里面,用旧的值。
name = c_name or goods.c_name
abort(404,message=‘good no exist’,meg=‘fail’),也可以扩充自带的状态码
parser = reqparse.RequestParser()
parser.add_argument('g_name',type=str,required=True,help='please input good name')
parser.add_argument('g_price',type=int,help='please input good price')
#传多个值:设置append属性
parser.add_argument('mu',action='append')
## 使用:
@marshal_with(goods_data_fields)
def post(self):
# g_name = request.form.get('g_name')
# g_price = request.form.get('g_price')
args = parser.parse_args()
g_name = args.get('g_name')
g_price = args.get('g_price')
parser_copy = parser.copy()//复制一个出来。
restful: 软件架构风格,前后端分离,后端只负责数据处理,前端通过异步请求的方式和后端交互。路径是名词,url代表一种资源。通过http请求方法来实现资源转换
flask-restful: 在api上注册使用
难点:数据(对象)的序列化,指定字段的输出模版。(其实也都还好)
输入过滤,reqparse.RequestParser
abort:
老师最后讲了一些关于爬虫与反爬虫的事例。