前言:
最近写web接口写得快吐了,写完还得写文档,甚至还得写点测试样本,还要在django和flask之间不断的重复类似的工作,简直不能忍。目前django和flask的restful工具包用着有点不顺手,所以就萌生了开发这个工具的初衷。

核心功能:

  1. 配置化api生成。
  2. 自动校验request提交的数据,并转换成指定格式,支持:int,float,list,dict,set,tuple,bool
  3. 自动生成api文档,并提供一个web页面可供查询和mock数据演示。
  4. 兼容 djangoflask
  5. 自动生成接口骨架文件功能。
  6. 自定义格式转换器,data_format.datetime格式转换类;'2019-01-18 23:25:25' to datetime
  7. 多国语言支持。
  8. 文档支持热重载。
  9. 默认值支持方法函数。
  10. 支持url中包含参数,例如 /api/user/<id>,并且在配置methods参数的时候设置它的规则。

如图所示(这是自动生成的文档格式,还很丑,未来会改进,当然你也可以看代码里的api/api_data这个接口的数据,拿到后自己写一个模版):

用法:

1、安装:

pip install api-shop

2、引入

from api_shop import ApiShop, Api

3、配置

# 这里配置了一个用户登录接口和一个测试接口
conf = [{'url': 'login','class': 'api.views.api_login','name': '账户登录','methods': {'POST': [{'name':'username', 'type': str, 'required': True, 'min': 3, 'max': 24, 'description': '用户名'},{'name':'password', 'type': str, 'required': True, 'min': 3, 'max': 24, 'description': '密码'},]}},{'url': 'test','class': 'api.views.test','name': '测试数据','methods': {'POST': [{'name':'add', 'type': str, 'required': True, 'min': 3, 'max': 24, 'description': '地址'},{'name':'bb', 'type': int, 'required': True, 'min': 0, 'max': 100, 'description': '百分比','default':95},{'name':'list', 'type': list, 'description': '列表'},],'DELETE':[{'name':'id', 'type': int, 'required': True, 'min': 1,'description': '编号'},]}},]

4、实例化(django)

# django的用法:在urls.py文件中
af = ApiShop(conf)app_name='api'urlpatterns = [path('api_data', af.get_api_data, name='api_data'),path('document/', af.render_documents, name='document'),re_path(r'([sS]*)', af.api_entry, name='index')
]

4、实例化(flask)

# 在flask的views中
af = ApiShop(conf)@app.route('/api/<regex("([sS]*)"):url>',methods=['GET', 'POST','PUT','DELETE','PATCH'])
def hello_world(url):print(url)if url=='document/':return af.render_documents(request,url)if url=='api_data':return af.get_api_data(request,url)return af.api_entry(request,url)

5、接口业务代码(django/flask一样的写法)

class api_login(Api):'''api登陆接口,方便微信用户绑定账户这里写的注释,会自动被文档收录,无需额外配置。'''def post(self,request,data=None):username = data.usernamepassword = data.passwordif len(username)<=4:return {'msg':'找不到该用户'},400return {'status': 'success', 'username': username}class test(Api):def get(self,request,data=None):return {'msg':data}def delete(self,request,data=None):return {'msg':'你删除了id={}的账号'.format(data.id)}def post(self,request,data=None):return {'msg':'你提交了信息','data':data}

写在后面:
api-shop目前版本1.7.2
django2.1、flask0.12.2、bottle 0.12.16 测试通过
如果遇到有问题,欢迎来我的github仓库提交issues

pcloth/api-shop​github.com

django render_(django/flask/bottle)多框架python-restful接口包api-shop相关推荐

  1. python - mysql接口包学习笔记

    测试环境:win10 64X Python 3.10.0 Anaconda3 python - mysql接口包 使用python连接mysql,是需要三方包的,目前主流的方式就是pymysql 和 ...

  2. php yii2 api框架,Yii2框架制作RESTful风格的API快速入门教程

    先给大家说下什么是REST restful REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Ro ...

  3. 【Flask】快速入门后台写接口【API】

    Flask是一个使用Python编写的轻量级Web应用框架. 其WSGI工具箱采用Werkzeug,模板引擎则使用Jinja2.Flask使用BSD授权.Flask也被称为"microfra ...

  4. java restful接口开发_利用Java框架实现Restful接口

    1.生产场景 生产场景中,有一个PHP后台程序负责采集用户访问门户的数据,之前采用的是piwik+MySQL的采集存储架构,后来投产后,发现每天数据量将近30万条之多!!!显然,原生的mysql是跑不 ...

  5. python restful接口返回类型出错_使用Python和Flask返回API错误消息

    我正在使用Python和Flask设计RESTful API. 如预期的那样,如果一切顺利,则API需要接收API请求并返回数据,但是在发生错误的情况下,它需要轻柔地失败并返回正确的错误. 我通常会在 ...

  6. python restful接口自动化_从未见过如些清新脱俗的完整Python+requests接口自动化测试框架搭建文章!...

    前言 很多小伙伴不知道什么是框架?框架有哪些东西? 一步步从需求分析到报告生成告诉你如何搭自动化建框架. 学完unittest后这里基本上可以搭建一个简易的项目框架了,我们可以用一条run_main. ...

  7. 写一个简单的python调用接口(API)

    一.get请求方式 from flask import Flask,request import jsonapp = Flask(__name__)# 只接受get方法访问 @app.route(&q ...

  8. python编写restful接口_Python开发之路系列:RESTful 接口开发

    这篇文章我们来看看在Flask里是如何进行RESTful接口开发的 按照我个人的理解,RESTful的核心价值再与它的规范性. RESTful接口是面向资源的, 而不是面向动作. 比如一个查书的接口, ...

  9. 使用CodeIgniter框架搭建RESTful API服务

    RESTful不仅仅是一套协议标准更是一种设计思路. 在2011年8月的时候,我写了一篇博客<使用CodeIgniter框架搭建RESTful API服务>,介绍了RESTful的设计概念 ...

最新文章

  1. linux shell中文显示
  2. QT编译发布程序后报错如缺少dll、“应用程序无法正常启动(0xc000007b)”的可能解决方法
  3. Java开发自学技巧!【漫画(1)
  4. 《《python基础》》
  5. [ARM异常]-ARMV8-aarch64异常和中断处理概念详细介绍
  6. css3 media query orientation,CSS3之media query
  7. [python opencv 计算机视觉零基础到实战] 七、逻辑运算与应用
  8. LeetCode 756. 金字塔转换矩阵(回溯)
  9. 巧用“记事本”程序让病毒白白运行
  10. 【转】Java 项目UML反向工程转化工具
  11. 热门Ruby 库中存在严重的命令注入漏洞
  12. 一分钟了解阿里云产品:安骑士
  13. 专访刘琛梅:如何全面提升测试效率和质量?
  14. oa处理会签流程图_OA-审批流程管理模块
  15. GIS实验之根据建筑物走向和方向角进行区域划分
  16. 无线连接网络找不到计算机组,无线网络连接不见了的4个解决方法!电脑无线网络连接找不到如何解决?...
  17. 拒绝iap cracker
  18. 分享一个网易新闻的api接口
  19. 常见的两种python编译器的安装
  20. python小游戏代码 py_教自己学Python(三)练手小游戏:不

热门文章

  1. Eclipse 常用快捷键(转)
  2. IBM Rational总经理夏然谈程序员生涯
  3. 华为笔试题 简答错误记录(字符串处理,好题!!!)
  4. Python命令行参数
  5. 【主席树】bzoj1112: [POI2008]砖块Klo
  6. 常用功能-删除功能测试点
  7. Django之ORM字段和参数
  8. [Java] Java常见错误
  9. Oracle学习系列1-7
  10. 参数返回Oracle 常用函数:nvl/nullif/case when/wm_concat/replace