今天博主終於完成了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)
博主根據路由對首頁,模塊,接口 定義了視圖
最后給大家看下效果