python 通过yapi管理接口平台调研结果(实时获取开发更新yapi动态)一

接口平台调研:
	由于公司的接口维护再yapi上,由于项目比较多,想整理所有的接口信息,到本地mysql,通过layui画出接口管理页面,用例模块驱动,定时的根据环境变量去设计接口监控线上环境和预发布环境

设计思路:
	1.整理yapi对外提供的api文档,拿到需要的接口信息
		由于每个项目都有一个固定的token,前期需要整理所有的项目以及对应的token
	如下是整理的接口文档信息:
	def get_project(token):
    '''
    获取项目基本信息
    :param token:
    :return:
    '''
    dic={}
    path='/api/project/get'
    query={
        "token":token
    }
    res=Client(url=url+path,method='GET',parmas=query)
    res.send()
    dic["projectName"]=(res.res_json.get("data")).get("name")
    dic["id"] = (res.res_json.get("data")).get("_id")
    dic["token"] = token
    return dic

def  getApiInterfaceGetCatMenu(project_id,token):
    '''
    获取菜单列表
    :param project_id:
    :param token:
    :return:
    '''
    dic = {}
    path = '/api/interface/getCatMenu'
    query = {
        "project_id":project_id,
        "token": token
    }
    res = Client(url=url + path, method='GET', parmas=query)
    res.send()
    print(res.res_json)



def getInterFaceList_menu(project_id,token):
    '''
    获取接口菜单列表
    :param project_id:
    :param token:
    :return:
    '''
    dic = {}
    path = '/api/interface/list_menu'
    query = {
        "project_id":project_id,
        "token": token
    }
    res = Client(url=url + path, method='GET', parmas=query)
    res.send()
    print(res.res_json)

def getApiInterfaceListCat(token,catid):
    '''
    获取某个分类下接口列表
    :param token:
    :param catid:
    :return:
    '''
    path = '/api/interface/list_cat'
    query = {
        "catid":catid,
        "token": token
    }
    res = Client(url=url + path, method='GET', parmas=query)
    res.send()
    apiList=(res.res_json.get("data").get("list"))
    return apiList


def getApiInterfaceGet(token,id):
    '''
    获取接口数据(有详细接口数据定义文档)
    :param token:
    :param id:
    :return:
    '''
    path='/api/interface/get'
    query = {
    "id": id,
    "token": token
    }
    res = Client(url=url + path, method='GET', parmas=query)
    res.send()
    print(res.res_json)
拿到所有项目下的接口信息,存库
2.如何拿到开发的实时更改接口的动态,之前参照很多文档,都是需要去实时对比数据库与yapi上整个大json,这样很笨重,后与运维沟通确认,yapi可以配置邮箱,开发每次更新都会给项目下的人员发yapi更新邮件,所以想到使用python去调用邮箱获取所有yapi发件人的邮件,再拿到内容中的接口名称,和接口信息,反查数据库拿到id,再获取yapi更新后的数据,直接更新到数据库,保证数据库的接口信息为最新的信息,展示在接口平台上
	安装exchangelib第三方库,具体的使用情况,可以参考gitlub信息,简单demo如下
from exchangelib import DELEGATE, Account, Credentials, Configuration, NTLM, Message, Mailbox, HTMLBody
from exchangelib.protocol import BaseProtocol, NoVerifyHTTPAdapter
def getmailMessage():
    # 此句用来消除ssl证书错误,exchange使用自签证书需加上
    BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter
    # 输入你的域账号如example\leo
    creds = Credentials(username='jianfeng@guanghe.tv', password='555588abcD!')
    a = Account(
        primary_smtp_address='jianfeng@guanghe.tv', credentials=creds, autodiscover=True
    )

    item_ids = a.inbox.filter(sender='yapi@no-reply.yc345.tv')
    for i in (item_ids):
        # print(i)
        print(i.subject, type(i.body))