逼逼叨叨
关于我自己: 纯粹的是打杂的一个,似乎啥活都干过,小公司里搬砖久了,似乎啥都懂一些,所以博文有些地方估计有纰漏,还请各位大侠,多多担待! 这一系列的文字算不上是文章,反倒像我个人的日常的开发笔记,难免也有些事我自己的个人想法,如有什么问题或错误欢迎各位指出,如有打扰的地方,也希望各位多多海涵。
ps: 如文章有打扰之处,还请多多原谅!我也只是想记录一下而已没别的!
前言
接上篇的基础开始,接下来我就开始接触我们所谓的真正的API开发。
关于API(Application Programming Interface 翻译过来就是:应用程序编程接口),API提供的是一些预设好的接口或函数,提供客户进行调用获取相关的资源信息。API按风格类型来的,目前主要的形式有:REST(HTTP)和 RPC 两种。 对于的RESTFUL API的理解,以下的文章参考菜鸟教程,提炼一些关键的信息:
- 1:RESTful一种软件架构风格,是一种规范,不是一种技术框架
- 2:RESTful 是对被调用资源的一种抽象,每个资源标记一个URI
- 3:提供标准的方法,对资源进行CURD
- 4:和HTTP相辅相成
- 5:对资源的操作,服务端是无状态,不需要保持Session
通常我们先用的API提供上基本上目前都还是基于HTTP或HTTPS对外提供服务的多一些,便于内部的话,当然主要是RPC了。
封装
所谓的框架,就是为提供好一个基础的架构,让你更专注与自己的业务逻辑即可,就行Bottle一样,它把作为一个web框架应有的基本元素都提供了。
通常一个快速可以使用的web框架需要提供以几个核心的组件模块
如:缓存、日志、定时器、命令行、文件锁、数据校验、定时任务、数据库ORM、TCP/UDP组件、进程管理/通信等模块。 当然还包含一些其他的工具类文件: 如:时间、队列、数组、集合、字符串、定时器、命令行、文件等
因为Bottle定位于微型的框架,一些东西是不存在的,所以我们可以再Bottle基础上,增加扩展一些其他第三方库,便于我们更好的专注于我们的业务逻辑的处理。
比如我们可以扩展的有:
- 1:Token令牌:使用JWT令牌机制,可用于单页面应用程序,合适做前后端分离等应用
- 2:bottle自定义全局的错误异常,重写HTTPError 统一异常返回格式,方便前端开发
- 3:使用wtforms表单验证相关的表单提交参数,方面我们的更加便捷的进行用户提交的参数的校验
- 4:更详细log日志记录,记录整个请求链路相关记录,也可以记录自己定义记录
- 5:peewee orm数据库的使用和简单封装
- 6:类似Flask蓝图应用
- 7:统一API接口的返回,规范API接口
- 8:提供一下常用封装好工具类
- 9:还可以自定义自己属于自己的ORM(本质上就是对SQL语句的封装)
项目结构规划
从封装的角度看,我划分的类库越少,越便于管理,所以我们提倡的尽量少定义太多的模块。当然,各司其职的精细化的模块分包,有些时候感觉也不是不可行。前期我们的还是需要定义一下,我们的项目结构。
因为现在微服务已经是大势所趋,在一个项目里面我们会根据业务需求拆分一些业务出来,各个业务之前的通信可以通过RESTFUL或RPC进行调用。所以我们我们的一般会封装一些基础的类库出来提供给其他子App,通过继承的的方法,提供各自的业务接口。
如图示我个人的一个代码结构如下:

项目结构说明
基础库core

core下存放是我们的基础库信息,主要包括的有,对基本的BasicApp的一些封装。具体的说明如下:
application -- 基础的应用,主要是封装基础的bottle实例对象
cache -- 封装一个关于redis单例模式,用于我们应用中的缓存处理
config -- 配置文件读取基础模块(其实可以不需要)
db -- 封装自定义数据库ORM,对SQL的封装处理
exceptions -- 全局错误异常捕获插件处理
forms -- 用户提交表单或参数的校验器,wtforms的封装处理
helper -- 一些工具类的存放地,如时间处理,还有JSON处理,还有微信发送异常等工具
http -- 对requests的封装,用于第三方接口的请求,并加上相关的日志统计
lib -- 其他第三库包
logger -- 应用日志的对象的初始化封装
middleware -- bottle中间件的一些示例
routes -- 实现类似PHP请路由方式的尝试
rsp -- 自定义响应报文信息封装、
signals -- 信号库的封装,用于业务解耦的信号发送处理
utils -- 其他工具类
应用实例app_demo

api -- 当前应用所以对外提供的API接口
config -- 当前应用的配置文件存放
log -- 当前应用生产的日志文件信息
models -- 当前应用相关数据模型的生成存放
service -- 当前应用数据逻辑的操作处理
validators -- 当前应用接口使用的一些wtform的校验实体存放
xtests -- 测试用户脚本
app.py -- 应用的创建App对象
test_start.py -- 应用测试脚本的启动
(完)
总结
以上是准备步入封装系列笔记的基础,规范好我们的相关的模块划分之后,我们就可以针对性进行处理!
END
好了各位,以上是关于bottle估计也是没什么营养,主要是对接下来封装进一步铺垫!
小钟同学 | 文 【原创】【转载请联系本人】| QQ:308711822