API Adaptor
工作简介
公司原有V1版本的API,但是由于开发的不够规范以及功能的升级,现在新开发了V2版本的API。理想中的是所有用户都迁移到V2版本的API,但实际上原有的老用户不想因为迁移而导致开发任务增加。
因此,需要开发一个适配器,当用户请求V1版本的API的时候,实际是请求了适配器。适配器将用户的请求参数提取之后,发起新的请求,请求对应功能的V2 API。当适配器收到V2 API的返回值之后,按照V1 API的返回值得结构,将对应的数据返回给用户。总之,用户仍然是使用的V1的API,但是实际是由适配器使用了V2的API。
开发简介
本次开发基于Django服务框架进行开发,适配器则被视为一个中间件,放在Django的Middleware层,拦截过滤所有请求。通过请求的URL可判断用户的请求是否是V1 API。
开发时长
一个月
技术栈
语言
- Python
工具
- VSCode (代码开发)
- Postman (API 调试)
- Sequel Pro(MySQL 数据库管理)
- Git (代码仓库)
- Jira(工作日志)
框架
- Django
数据库:
- MySQL
- MongoDB
开发过程
此次开发适配器,考虑到对于所有的接口都需要对请求参数以及返回数据重新包装,所以可以将发送请求的这类方法提取为公共方法,写到一个父类里,父类定义好公共的方法以及需要重写的方法,由子类继承并重写方法。
大致类图如下:
收获
- 此次开发,使用了Warp将请求包装,建立了异常捕获机制。
- 了解了MetaClass:创建类的类。
- 了解Djangle的Middleware
- 了解Django的几种Response:HttpResponse, StreamingResponse, JsonResponse
- 了解Django连接MySQL,QuerySet
改进
- 可以尝试使用装饰器,使用一些类的功能性方法,类似__getattr__, __init__等等。
- 多参考设计模式,让代码开发更具规范性,也可以提升代码开发速度。