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已经为来自全球的超过两万家企业托管超 ...
随机推荐
- JS request函数 用来获取url参数
function request(strParame) { var args = new Object( ); var query = location.search.substring(1); va ...
- log4net 部署到服务器之后 无法记录日志问题 解决方法
通常情况下无法记录日志的原因是:权限问题 1. 右键该站点的程序文件夹>>安全 2. 找到 IIS_IUSR 用户,然后编辑权限 允许修改,保存即可 3. 搞定
- (转)textarea去掉右侧滚动条,去掉右下角拖拽
本文转载自:http://blog.csdn.net/cctv_end/article/details/7946188 代码: <TEXTAREA style= "overflo ...
- 黄聪:wordpress/wp-admin目录文件
wp-admin/admin.php:管理文件的核心文件.用来连接数据库,整合动态菜单数据,显示非核心控制页面等. wp-admin/admin-db.php wp-admin/admin-foote ...
- (WPF) MVVM: DataGrid Binding
Binding到DataGrid的时候,需要用到ObservableCollection. public ObservableCollection<Customer> Customers ...
- firebug下载时出现there was an error loading firebug
打开Firefox -> Preferences -> Advance ->Certificates 将Query OSCP....前面的checkbox取消
- contentProvider 内容提供者
http://blog.csdn.net/woshixuye/article/details/8280879 实例代码当数据需要在应用程序间共享时,我们就可以利用ContentProvider为数据定 ...
- 解析wamp的php.ini设置不生效的原因
你是否有过这样的经历,当你打开wamp的php.ini,并进行参数修改之后.再回到命令去运行你的php脚本,却发现你的设置居然不生效? 如果有这样的情况,那你得先了解php的两种运行运行环境,一个在命 ...
- git同步开发更新至项目目录(转载)
From:http://toroid.org/ams/git-website-howto 本地版本库中存放开发的项目代码.以下内容介绍如何将本地版本库修改通过执行“git push web”命令同步到 ...
- android之Widget01
ExampleAppWidgetProvider.java package com.example.mars_2600_widget01; import android.appwidget.AppWi ...