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