Flask框架学习笔记(API接口管理平台 V1.0)
今天博主终于完成了API接口管理平台,最后差的就是数据库的维护,
博主这里介绍下平台的设计原理,首先基于python,利用flask的web框架+bootstrap前端框架完成,先阶段完成了前台展示页
二期要加入登录退出,后台管理
下面是文档结构图
涉及的python第三方模块:flask、flask-bootstrap、sqlalchemy
整体页面的布局:页头的导航,右侧的API分类,页面信息
页面信息内容包括:接口说明,请求参数,返回参数,请求示例,返回示例
下面是定义数据库对象的model.py 文件
#!/usr/bin/env python
# -*- coding: utf-8 -*- from sqlalchemy import Column, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
import json
import sys
# 导入数据库所有表字段类型
from sqlalchemy.dialects.mysql import \
BIGINT, BINARY, BIT, BLOB, BOOLEAN, CHAR, DATE, \
DATETIME, DECIMAL, DECIMAL, DOUBLE, ENUM, FLOAT, INTEGER, \
LONGBLOB, LONGTEXT, MEDIUMBLOB, MEDIUMINT, MEDIUMTEXT, NCHAR, \
NUMERIC, NVARCHAR, REAL, SET, SMALLINT, TEXT, TIME, TIMESTAMP, \
TINYBLOB, TINYINT, TINYTEXT, VARBINARY, VARCHAR, YEAR # 创建对象的基类:
Base = declarative_base() reload(sys)
sys.setdefaultencoding("utf-8") # 定义api表对象
class Api(Base):
# 表的名字:
__tablename__ = 'api' # 表的结构:
id = Column(INTEGER(10), primary_key=True)
name = Column(VARCHAR(50))
url = Column(TEXT)
method = Column(VARCHAR(10))
service = Column(VARCHAR(50))
access_token = Column(VARCHAR(255))
reqParam = Column(TEXT)
response = Column(TEXT)
requestExam = Column(TEXT)
responseExam = Column(TEXT) # 定义model表对象
class Model(Base):
# 表的名字:
__tablename__ = 'model' # 表的结构:
id = Column(VARCHAR(25), primary_key=True)
name = Column(VARCHAR(50))
ch_name = Column(VARCHAR(50))
from_id = Column(VARCHAR(25))
下面是试图views.py
#!/usr/bin/env python
# -*- coding: utf-8 -*- from app import app
from flask import render_template, flash, redirect, session, url_for, request, g
from models import Api, Model
from config import connect_db
import json
import sys reload(sys)
sys.setdefaultencoding("utf-8") @app.route("/")
@app.route("/index")
def index():
return render_template("index.html") @app.route("/<id>", methods=["GET", "POST"])
def model(id):
all_name = []
db = connect_db()
conn = db()
table_model = conn.query(Model).filter(Model.name == id).one()
model_name = table_model.name
model_ch_name = table_model.ch_name
model_all = conn.query(Model).filter(Model.from_id == table_model.id).all()
for i in range(len(model_all)):
name = {"ch_name": model_all[i].ch_name, "name": model_all[i].name}
all_name.append(name)
conn.close()
return render_template("model.html",
model_name=model_name,
model_ch_name=model_ch_name,
all_name=all_name) @app.route("/desk/<id>")
def form(id):
all_names = []
db = connect_db()
conn = db()
table_model = conn.query(Model).filter(Model.name == id).one()
model_all = conn.query(Model).filter(Model.from_id == table_model.from_id).all()
for i in range(len(model_all)):
name = {"ch_name": model_all[i].ch_name, "name": model_all[i].name}
all_names.append(name)
model_id = conn.query(Model).filter(Model.id == table_model.from_id).one()
model_ch_name = model_id.ch_name
model_name = model_id.name
table_api = conn.query(Api).filter(Api.id == table_model.id).one()
name = table_api.name
url = table_api.url
method = table_api.method
service = json.loads(table_api.service)
access_token = json.loads(table_api.access_token)
reqparam = json.loads(table_api.reqParam)
response = json.loads(table_api.response)
request_exam = table_api.requestExam
response_exam = table_api.responseExam
conn.close()
return render_template("form.html",
url=url,
method=method,
name=name,
all_names=all_names,
model_name=model_name,
model_ch_name=model_ch_name,
service=service,
access_token=access_token,
reqparam=reqparam,
response=response,
request_exam=request_exam,
response_exam=response_exam)
博主根据路由对首页,模块,接口 定义了视图
最后给大家看下效果
Flask框架学习笔记(API接口管理平台 V1.0)的更多相关文章
- Flask框架学习笔记(API接口管理平台 V2.0)
博主今天把API接口管理平台发布到github了,这次是更新一些功能 如支持本地数据库sqlite3.优化了数据结构 技术方面跟之前V1.0相同,只增加生产本地数据:但是为了支持层级的参数,修改了数据 ...
- 分享一个开源免费、目前最好的API接口管理平台----eoLinker
一.概况 eoLinker 是目前业内领先.国内最大的在线 API 接口管理平台,提供自动生成 API 文档.API 自动化测试.Mock 测试.团队协作等功能,旨在解决由于前后端分离导致的开发效率低 ...
- Web开发Flask框架学习笔记
Python 是一种跨平台的[计算机程序设计语言],是一种面向对象的动态类型语言,Python是纯粹的自由软件,源代码和解释器CPython遵循 GPL(GNU General Public Lice ...
- Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0
以前在工作当中做过不少与工作流Activiti有关的工作,当时都是spring集成activiti5.22的项目,现在回过头去看,其实版本已经稍微老了,因此,基于先前的工作经验,决定用较新版本的技术来 ...
- 这个接口管理平台 eoLinker 开源版部署指南你一定不想错过
本文主要内容是讲解如何在本地部署eoLinker开源版. 环境要求 1.PHP 5.5+ / PHP7+(推荐) 2.Mysql 5.5+ / Mariadb 5.5+ 3.Nginx(推荐) / A ...
- 这份接口管理平台 eoLinker 开源版的部署指南教程你一定不想错过
本文主要内容是讲解如何在本地部署eoLinker开源版. 环境要求 1.PHP 5.5+ / PHP7+(推荐) 2.Mysql 5.5+ / Mariadb 5.5+ 3.Nginx(推荐) / A ...
- JavaSE中线程与并行API框架学习笔记1——线程是什么?
前言:虽然工作了三年,但是几乎没有使用到多线程之类的内容.这其实是工作与学习的矛盾.我们在公司上班,很多时候都只是在处理业务代码,很少接触底层技术. 可是你不可能一辈子都写业务代码,而且跳槽之后新单位 ...
- JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?
前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事 ...
- [接口管理平台] eoLinker AMS 专业版 V3.5 :加入数据结构管理、通用函数管理、API 快速测试等近 30 项更新
eoLinker AMS是集API文档管理.API自动化测试.开发协作三位一体的综合API开发管理平台,是中国最大的在线API管理平台.目前eoLinker AMS已经为来自全球的超过两万家企业托管超 ...
随机推荐
- nova分析(5)—— nova-conductor
nova-conductor是nova-compute之上的一个服务,这个服务比较简单,主要封装了DB访问和动态迁移相关的代码.转来一篇文章看看它是如何工作的. 更新记录:1. 2013.4.19 ...
- ios外派—本公司长年提供ios程序员外派业务(北京动点软件,可签合同)
北京动点飞扬长年提供ios工程师外派业务. 我公司程序员平均技术情况如下: 1.二年以上iPhone/ipad开发经验:2.熟练使用Xcode.Objective C编码技能:3.熟悉iOS开发框架, ...
- Value Dispose() cannot be called while doing CreateHandle().
在backgroundWorker run之前show出了一个窗体_frm. _frmpw = new FrmPleaseWait(); _frmpw.SetMsg("正在请求") ...
- SQL SERVER 2008安装时出现不能在控件上调用 Invoke 或 BeginInvoke错误 解决方法
或者 SQL SERVER 2008安装时要求重启,但重启后仍要求重启.都可以使用此方法. 注册表的 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet ...
- 学习C++11的一些思考和心得(1):lambda,function,bind和委托
1.lambda表达式 lanbda表达式简单地来讲就是一个匿名函数,就是没有名称的函数,如果以前有接触过python或者erlang的人都比较熟悉这个,这个可以很方便地和STL里面的算法配合 st ...
- CentOS of MySQL command
1.本地连接数据库 [root@iZ253lxv4i0Z mysql]# mysql -u root -pEnter password: or: [root@iZ253lxv4i0Z mysql]# ...
- 学习ios键盘和textfield之间操作体会
所需要计算就是,键盘移动以后是否遮挡住了textfield,需要用到的计算公式: int offset = 键盘的高度-(self.frame.size.height - self.textfiled ...
- Spark配置参数调优
1.配置多个executor 在项目中,由于数据量为几百万甚至千万级别,如果一个executor装载的对象过多,会导致GC很慢.项目中,我们使一个worker节点执行app时启动多个executor, ...
- BEvent_标准控件Event的用法(案例)(待整理)
2014-06-06 Created By BaoXinjian
- Guava 10-散列
概述 Java内建的散列码[hash code]概念被限制为32位,并且没有分离散列算法和它们所作用的数据,因此很难用备选算法进行替换.此外,使用Java内建方法实现的散列码通常是劣质的,部分是因为它 ...