• HTTP 接口响应数据解析


    转自:https://blog.csdn.net/hubanbei2010/article/details/79878567

    作为产品线的支撑角色QA/CI/CD等,http api解析是互联网公司中最常见的工作。

    接口访问,返回的数据一般是json格式。

    常见场景:对json格式数据的解析,取某个字段的值,做相应的判断。

    任务:

    假设刚部署出来的site的域名url为 https://qa-ultra-rds-96x.bbpd.io,现在检验version字段是否与预期相符。

    与开发同学沟通,得知version信息可以通过访问api(/ultra/api/v1/buildinfo)获取到。

    响应的数据为:

    {
      "name": "ultra",
      "version": "3400.3.0",
      "branch": "develop",
      "commit": "a8ccaeb2b1c6094d598932219bb32cf9fe0380",
      "timestamp": "1523024279567",
      "date": "2018-04-06_14-17-59",
      "buildNumber": "3033",
      "buildName": "ultra/ultra-ui/develop",
      "buildType": "webpack",
      "buildVersion": "3400.3.0-ci.3033+a8ccaeb2",
      "ultraVersion": "2018-04-06_09-38-20",
      "learnVersion": "3400.3.0-ci.2927+b960272",
      "webServerVersion": "2.0.16",
      "config": {
        "mode": "production",
        "uiVersioningEnabled": true,
        "staticAssetsDomain": "d2aqwpvls1cndj.cloudfront.net",
        "learnVersionMapping": [
          {
            "from": "0.0.0.0",
            "uiVersion": "2018-04-06_09-38-20"
          }
        ]
      }
    }

    SHELL脚本实现:

    curl -s --insecure https://qa-ultra-rds-96x.bbpd.io/ultra/api/v1/buildinfo|grep ' "ultraVersion"'|awk -F '"' '{print $4}'

    PYTHON脚本实现:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import sys
    import json
    import requests

    def get_ultra_ui_version(base_url):
    version_url = base_url + '/ultra/api/v1/buildinfo'

    try:
    res = requests.get(version_url)
    print('respons status is %d' % res.status_code)
    ultraVersion = json.loads(res.text)['ultraVersion']
    print(type(ultraVersion))
    except Exception as ex:
    print('call api is failed and error message is :%s' % str(ex))
    print(ultraVersion)
    return ultraVersion 


    if len(sys.argv) >=2:
    base_url = sys.argv[1]
    else:
    print('parameters are missing')
    sys.exit()


    get_ultra_ui_version(base_url)

    总结:

    对比一下,
    发现不需要登录状态下,且只需要获取简单信息,不需要后续处理,api的访问使用shell比python要简单的多。

    如果涉及登录,可以借用python的requests库,可以实现较复杂的认证功能。且使用python库可以实现多请求的连续访问,多次请求之间有session的依赖关系。保持底层session不中断,可以减少建立tcp连接的次数,支持高并发。

  • 相关阅读:
    LeetCode OJ--Best Time to Buy and Sell Stock II
    LeetCode OJ--Best Time to Buy and Sell Stock
    路飞学城Python-Day37(practise)
    路飞学城Python-Day37
    路飞学城Python-Day36
    路飞学城Python-Day35
    路飞学城Python-Day35
    “肥宅快乐数”-python暴力版
    路飞学城Python-Day34
    路飞学城Python-Day33
  • 原文地址:https://www.cnblogs.com/yadongliang/p/9665476.html
Copyright © 2020-2023  润新知