• 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)

    博主根据路由对首页,模块,接口 定义了视图

    最后给大家看下效果

  • 相关阅读:
    I Think I Need a Houseboat
    iOS 8 模糊视图(毛玻璃效果)的简单实现UIVisualEffectView
    freemarker报错之二
    [算法]有趣算法合辑[31-40]
    计算机专业术语全称及含义整理
    JAVA经常使用数据结构及原理分析
    我读经典(6):读《文明之光》有感
    流水号的生成(日期+业务码+自增序列)
    桶排序算法
    3.5星|《哈佛商学院最受欢迎的营销课》:跳出营销红海:逆向战略、超越行业和敌意品牌
  • 原文地址:https://www.cnblogs.com/cllovewxq/p/5696014.html
Copyright © 2020-2023  润新知