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)

博主根據路由對首頁,模塊,接口 定義了視圖

最后給大家看下效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM