运用flask、flask-restful开发rest风格的接口,并使用蓝图增长代码的延展性和可扩展性。

本人作为一个测试人员,以前也有写过,想要测试好接口,那必需要知道如何开发一个接口的重要性。html

以前也写过通flask或者flask-retful开发接口,但那些只是一些最简单的demo,不具备很好延展性和扩展性。python

这次咱们带一整个完整的demogit

使用flask-retfull,orm,蓝图,来让代码更加具备可塑性。github

这次咱们实现了5个接口,固然笔者还在不断的完善中。文末会贴出代码的git地址,以为有用的朋友能够关注一下。sql

首先看一下咱们的代码目录:数据库

db:因为运用的是sqlite数据库,此处为存放数据库文件。
file:模拟的上传文件的操做,凡是经过上传文件接口上传的文件都存在此处。
src:
  --common : 写一个公共的方法
  --module: 存放相关蓝图
    --user : user为本项目的一个蓝图。(若有须要可扩展其它蓝图文件,只须要在主app中注册该蓝图及可)
venv : 本项目的虚拟目录
app  :主启动文件
models : 数据库orm
settings  : 本项目相关设置

  数据库orm的建立,以及flask项目的相关配置,蓝图的使用和注册,这里不过多的讲,咱们重点讲一下接口代码的实现方法。json

一、查询接口:这里主要是根据名字来查询,并进行了分页的处理。当不传名字参数时,则认为是查询所有数据。flask

如下是查询使用的orm:restful

stu=Student.query.filter(and_(Student.name == name, Student.is_del == 0)).paginate(page=page,per_page=num)

参数讲解:name为用户名字,page为页数,per_page为每页条数。session

result = []
for s in stu.items:
  result.append(s.to_json())

以上是把查询出来的数据进行遍历并赋值给一个列表以便最后返回。

二、添加接口:是根据提交的数据直接把数据插入到数据表中,此处须要注意的是全部数据不能为空。

stu = Student(name=name, sex=sex, age=age, grade=grade, source=source, face=face)
if name and sex and age and grade and source and face:
   try:
       db.session.add(stu)
       db.session.commit()
           return make_result()
   except:
        return make_result(code=Code.DATA_FAIL)
else:
   return make_result(code=Code.PARAM_FAIL)

三、上传文件接口:此处是模拟上传,只是把上传的文件保存到了项目的file文件夹下,但此处须要注意是,定义上传文件参数类型的时候须要导入一个包。

from werkzeug.datastructures import FileStorage

四、删除接口:本着不能随意删除数据的原则,咱们在建立表的时候,添加一个is_del字段来肯定只条数据是否删除。所以删除接口的本质是把这个字段改成1。

五、修改接口:修改接口的是根据表id,把数据查询出来,而后再根据其要修改的字段来进行修改。(原理上和删除接口同样)此处须要注意的是,修改数据不会全部数据都修改,只会修改其中某一条或几条数据,咱们接口定义的是,若是修改才传只参数,不修改则不传,所以:

stu = Student.query.filter(Student.id == id).first() if stu: if name or sex or age or grade or source or face: if name: stu.name = name if sex: stu.sex = sex if age: stu.age = age if grade: stu.grade = grade if source: stu.source = source if face: stu.face = face db.session.add(stu)

有些参数就修改,无则不修改。

 

最后须要说明一点,由于咱们写的rest风格的接口,所以返回的数据应该是json格式的,所以咱们在建立Orm数库表时,建立了一个to_json()方法,以供使用。

def to_json(self): return { 'id': self.id, 'name': self.name, 'sex': self.sex, 'age': self.age, 'grade': self.grade, 'source': self.source, 'face': self.face, 'is_del': self.is_del }

 

 

 

以上就是咱们所实现的所有接口。

 

git址址:https://github.com/gfihdx/flask-restful.git

有兴趣的能够去git clone一下,并关注,后期更新。

下次更新目标,多表的联合查询,及查询数据的格式化方法优化。

 

注:虽然文章拙劣,但转载请注明出处。

原文出处:https://www.cnblogs.com/Alin-2016/p/11065322.html

相关文章
相关标签/搜索