python格式化swagger文档接口

论坛 期权论坛 脚本     
匿名技术用户   2021-1-6 03:47   41   0

生成接口格式的方法:

# -*- coding:utf8 -*-

import json

from idcm import interfaces

class Interface():

def writefilename(self,data):

try:

if data!='':

with open('E:\interface\\'+data+'.py', 'w+', encoding='utf-8') as f:

f.write('# -*- coding:utf8 -*-' + '\n')

f.close()

global olddata

olddata=data

return data

else:

return olddata

except Exception as e:

print(e)

def writedata(self,mode,data='',num=1,moudle='',): #data是指写入文件的数据,num是指循环写入的次数,moudle指文件头部导入的模块

filename = Interface().writefilename('')

try:

with open('E:\interface\\' + filename + '.py', 'a+', encoding='utf-8') as f:

if mode == 'importmethod':

f.write('import ' + data + '\n')

if mode == 'fromimportmethod':

f.write('from ' + moudle + ' import ' + data + '\n')

if mode == 'classname':

f.write('class' + ' ' + data + '():')

if mode == 'defname':

f.write('def' + ' ' + data + '(self):')

if mode == 'url' or mode == 'method':

f.write(mode + '=' + '"' + data + '"')

if mode == 'keyword':

for i in range(0, num):

f.write(' ')

if mode == 'newline':

for i in range(0, num):

f.write('\n')

if mode == 'keywordnewlinefour':

for i in range(0, num):

f.write('\n')

for i in range(0, num+3):

f.write(' ')

if mode == 'keywordnewlineeight':

for i in range(0, num):

f.write('\n')

for i in range(0, num+7):

f.write(' ')

if mode == 'return': f.write('return ' + 'url,' + 'method,'+'parameter')

if mode == 'parameters':

parameters={}

for i in range(0, num):

if data[i]!='':

parameters[data[i]]='' #将list对象写成dict

else:

pass

parameters=json.dumps(parameters) #将字典序列化成json写入文件parameters=parameters.replace('"parameters[','parameters[').replace(']"',']') #把parameters里面的value值的双引号去掉,让value变成变量

f.write('parameters='+parameters)

f.close()

except Exception as e:

print(e)

if __name__=='__main__':

intf=interfaces.Requestss().getassetslist()

print(len(intf[3][0]),len(intf[3][1]))

Interface().writefilename('swagger')

Interface().writedata('importmethod','json')

Interface().writedata('fromimportmethod','interfaces',1,'idcm')

Interface().writedata('newline', '', 3)

Interface().writedata('classname','Swaggers')

url='***'

for i in range(0,len(intf[0])):

Interface().writedata('keywordnewlinefour', '',1)

Interface().writedata('defname', intf[0][i])

Interface().writedata('keywordnewlineeight', '',1)

Interface().writedata('method', intf[1][i])

Interface().writedata('keywordnewlineeight', '',1)

Interface().writedata('url', url+intf[2][i])

Interface().writedata('keywordnewlineeight', '',1)

Interface().writedata('parameters', intf[3][i],len(intf[3][i]))

Interface().writedata('keywordnewlineeight', '',1)

Interface().writedata('return')

获取swagger接口参数的方法:

# -*- coding:utf-8 -*-

import requests

import json

import time

class Requestss():

def getassetslist(self):

url = 'http://***/swagger/v1/swagger.json'

dat = requests.get(url)

dat = dat.json()

path=dat['paths']

interface=[]

method = []

interfaces=[]

parameters = []

# num=0

# for key,value in path.items(): #获取dict的键,值

# num+=1

# interface.append(key)

# method.append(value)

for key in path:

keys=key.split('/') #如把/api/Advertising/GetBuyInAmount分割取接口名称GetBuyInAmount

interfaces.append(key)

keyss=keys[len(keys)-1] #取/api/Advertising/GetBuyInAmount以‘\’分割为列表的最后的一个数据为接口名称

if '{' in keyss:

keyss=keys[len(keys)-2] #如果最后一个接口带有{},则往上取一个数据为接口名称

interface.append(keyss)

for value in path[key]: #取接口的方法,如post,get

method.append(value)

for k,v in path[key].items():#取各接口的请求的参数,取字典key,value的值

#print(k,v)

parameter = []

if v['parameters']!=[]:

for para in range(0, len(v['parameters'])):

parameter.append(v['parameters'][para]['name'])

else:

parameter.append('')

parameters.append(parameter)

print(len(parameters),parameters)

# for i in range(0,num):

# #print(path[keys[i]])

# for key in path[interface[i]]:

# pamas = path[interface[i]][key]['parameters']

# if pamas!=[]:

# parameters=[]

# for p in range (0,len(pamas)):

# parameters.append(path[interface[i]][key]['parameters'][p]['name'])

# #print(pama)

# #print(keys[i], key, parameters)

# else:

# #print(keys[i], key)

# pass

# method.append(key)

return interface,method,interfaces,parameters

if __name__=='__main__':

Requestss().getassetslist()

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP