首页 > 编程语言 >python解析swagger文档数据

python解析swagger文档数据

时间:2023-08-01 11:33:52浏览次数:36  
标签:body get python param 文档 print swagger data method

众所周知swagger文档存储在api-docs接口中
可以通过http获取接口的响应或者直接copy json的响应到文本中,最终得到的数据都是data
处理逻辑如下:

with open("1.txt",'r',encoding='utf8') as f:
    data = f.read()
    data = json.loads(data)
    basePath = data['basePath']
    paths = data["paths"]

    cases_data = []
    for path, methods in paths.items():
        for method, details in methods.items():
            method = method.upper()
            summary = details["summary"]
            parameters = details.get("parameters", [])

            # 获取headers
            headers = {param['name']:"" for param in parameters if param.get("in") == "header"}

            # 获取body
            rep_body = [param.get('schema').get('originalRef') for param in parameters if param.get("in") == "body"]

            body = ''
            if rep_body:
                dto = data["definitions"].get(rep_body[0])
                if dto:
                    properties = dto.get('properties')
                    body = properties.copy()
                    for item,params in properties.items():
                        for param,value in params.items():
                            if param == 'items':
                                new_dto = data["definitions"].get(value['originalRef'])
                                n_list = [{param:""} for param in new_dto['properties']]
                                body[item]=n_list
                            else:
                                body[item]= ''
            # 组装参数
            cases_data.append({
                "url": basePath+path,
                "method": method,
                "name": summary,
                "headers": headers,
                "body": body
            })
            print("Path:", basePath+path)
            print("Method:", method)
            print("Name",summary)
            print("Headers:")
            print(headers)
            print("Body:")
            print(body)
            print("-" * 30)

最终处理后的数据格式如下:
Path: /tr*****/c*t
Method: POST
Name 接xx状态
Headers: {'x-user-token': '', 'x-req-timestamp': '', 'x-req-rd': ''}
Body: {'data': '', 'key': '', 'partner': '', 'sign': '', 'timestamp': ''}


Path: /t*****/w*t
Method: POST
Name 接xx态
Headers: {'x-user-token': '', 'x-req-timestamp': '', 'x-req-rd': ''}
Body: {'h5Url': '', 'id': '', 'partnerId': '', 'productCode': '', 'productName': '', 'productProtocolList': [{'protocolName': ''}, {'protocolType': ''}, {'protocolUrl': ''}], 'status': ''}


标签:body,get,python,param,文档,print,swagger,data,method
From: https://www.cnblogs.com/xchuan/p/17596022.html

相关文章

  • python第二天
    1、写作业第一天学习的作业#作业1.1n=1whilen<11:print(n)ifn==6:n=n+2else:n=n+1#1-100求奇数n=1whilen<101:temp=n%2iftemp==0:passelse:print(n)n=n+1#......
  • Python-推导式和生成器表达式
    推导式利用[]或者{}可以定义列表推导式、集合/字典推导式,推导式的结果就是相应的列表,字典/集合数据类型。注意是没有元组推导式的,因为圆括号()被用来作为生成器表达式语法了。列表推导式ListComprehension用方括号[]包含内容,里面利用for[if]循环和相应的函数生......
  • 【Python】calendar_标准库的日历模块
    日历模块calendar.calendar(year,c,w,l)c:每月间隔距离w:每日宽度间隔l:每星期行数打印年日历#coding:utf-8importcalendarfromloguruimportloggeraslogsif__name__=="__main__":"""Run""""""打印年日历......
  • C# 反序列化报错 XML 文档(1, 2)中有错误:不应有 <xml xmlns=''>
    1.XmlSerializer症状用XmlSerializer进行xml反序列化的时候,程序报错:​不应有<xmlxmlns=''>。​​说明: ​执行当前Web请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 ​异常详细信息: ​System.InvalidOperatio......
  • python发送消息到Teams以及阿里云的上传与删除
    1importurllib2importtime3importoss24importos5importrandom6frompathlibimportPath7importrequests8importdatetime9fromdecoupleimportconfig1011fromurllib.parseimportunquote121314#......
  • 009 python socket UDP服务端程序,在pycharm正常运行,生成的exe运行有时候接收不到数据,
    写了一个简单的socket服务端程序,在pycharm中正常,生成exe后运行,有时候接收不到数据。经过半天折腾,发现,只要按一下回车,程序又能正常运行了。最终发现,是因为控制台的快速编辑功能打开导致程序假死。在控制台程序的菜单栏右键点击--->默认值--->去掉“快速编辑模式”和“插入模式”......
  • Python高级过滤器:掌握filter函数从入门到精通
    简介在Python中,filter()是一个非常有用的内置函数,它能够根据指定的函数来筛选出可迭代对象中满足条件的元素,返回一个迭代器。filter()函数的使用能够简化代码,并提高程序的可读性。本文将从入门到精通,全面介绍filter()函数的用法和相关知识点。1.filter()函数的基本用法filter(......
  • 巧用Python中set集合对比两个文本文件
    """1.读取文件2.使用set集合s.add(x)添加xins是否在集合中>>>basket={'apple','orange','apple','pear','orange','banana'}>>>print(basket)           #这......
  • opencv-python 边缘提取
    边缘时像素值发生跃迁的位置,是图像的显著特征之一。在图像特征提取,对象检测,模式识别等方面有重要作用。1sobel(索贝尔)算子sobel算子对图像求一阶导数。一阶导数越大,说明像素在该方向的变化越大,边缘信号越强。因为图像的灰度值都是离散的数字,sobel算子采用离散差分算子计算图像......
  • android画图-----shape的使用文档…
    在GradientDrawable1试图中终于把shape学会了,以前总是似懂非懂,现在终于把里面的东西搞清楚了,同时也挺佩服谷歌的用心,故意设置一些陷阱吧,不认真对待还真以为没有啥效果呢。setContentView(R.layout.shape_drawable_1)shape_drawable_1代码如下:<ScrollViewxmlns:android="htt......