今天博主终于完成了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)
博主根据路由对首页,模块,接口 定义了视图
最后给大家看下效果