django的接口大致讲完之后,我们来看看flask是如何写接口的
flask无愧于小而美的称呼,快速与方便,在使用的时候可以很清楚的感受到
先看一下我的项目结构
我使用蓝图进行项目结构的调整,这方面来说,每个人都有自己习惯的项目结构,每个人写的都有不同,所以说怎么使用蓝图构建自己的项目结构,大家可以自己去决定,
这也是flask的高扩展性的表现之一。
我简单说一下我的项目结构,我注册了两个蓝图mall与acounts
并将models与forms以及配置文件conf等分离出来
app.py为我的主项目
这方面就先说到这里了
然后pip安装
pip install flask-restful
安装好后,我们在app.py下进行api对象的实例化
并且注册api路由
api = Api(app)
api.add_resource(MallApi,'/api')
api.add_resource(MallApi2,'/api/<string:id>')
其中MallApi是我写的接口类的名称
这个类我写在了我的mall蓝图的views中:
from flask_restful import Resource,reqparse
parser = reqparse.RequestParser()
parser.add_argument('username',type=str)
parser.add_argument('nickname',type=str)
parser.add_argument('password',type=str)
parser.add_argument('email',type=str)
parser.add_argument('phone',type=str)
class MallApi(Resource):
def get(self):
data = []
user_list = User.query.all()
for user in user_list:
dict1 = {}
dict1['user_id'] = user.id
dict1['username'] = user.username
dict1['password'] = user.password
data.append(dict1)
return data
def post(self):
args = parser.parse_args()
print(args)
user = User()
user.username = args.get('username')
user.nickname = args.get('nickname')
user.password = args.get('password')
user.email = args.get('email')
user.phone = args.get('phone')
db.session.add(user)
db.session.commit()
return {'data':'新增成功'}
class MallApi2(Resource):
def put(self,id):
user = User.query.get(id)
user.username = 'huhuhu'
db.session.add(user)
db.session.commit()
return user.username
def delete(self,id):
user = User.query.get(id)
db.session.delete(user)
db.session.commit()
def get(self,id):
user = User.query.get(id)
return {'user_id':user.id,'username':user.username,'password':user.password}
reqparse我是用来做简单的post表单验证的,使用了之后,一定要注意parser.add_argument(‘username’,type=str),需要指定接受字段名称与类型
这样子,查全部,查单个,新增,修改,删除,也就全部实现了
来看看实践效果
新增
查全部
修改
查单个
删除
好了,完全木有问题,flask_restful的api基本的增删改查到这里就差不多讲完了
下次继续