转自: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连接的次数,支持高并发。

HTTP 接口响应数据解析的更多相关文章

  1. 使用 yapi-to-typescript 生成接口响应数据的 TS 类型声明

    TS 是越写越爽,但是很不爽的是接口响应数据一堆,每次要去手写很麻烦. 最近正好后端接口文档从一个垃圾工具切换到了 Yapi,然后去搜了下可以通过接口文档自动生成 TS 类型声明,就自己搞了下,还是很 ...

  2. Spring Cloud Zuul记录接口响应数据

    系统在生产环境出现问题时,排查问题最好的方式就是查看日志了,日志的记录尽量详细,这样你才能快速定位问题. 如果需要在Zuul中进行详细的日志记录,这两种日志必不可少. API请求信息 API响应信息 ...

  3. 如何实现从登录接口响应数据中提取JSESSIONID

    通过调用接口,对服务器产生压力,单接口测试,会遇到响应数据返回的是要求先登录.这是我们在调用这个接口时,根据业务逻辑,必须先登录才可以,比如:提交订单,那么就需要先获取用户登录的JSESSIONID, ...

  4. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-模拟接口响应数据(18)

    这里是把传入的请求数据作为响应值返回 # -*- coding: utf-8 -*- # @Time : 2020/2/15 9:47 # @File : do_mock_18.py # @Autho ...

  5. Jmeter—添加断言 判断接口响应数据是否符合预期

    发出请求之后,通过添加断言可以判断响应数据是否是我们的预期结果. 1 在Jmeter中发送一个状态返回200的http请求(参数故意输入错误).结果肯定是不是返回200啦. 但结果树中http请求的图 ...

  6. JMeter接口响应数据出现乱码的三种解决方法

    第一种方法: Content encoding设置为utf-8,若仍为乱码,请用方法2 图1 第二种方法: 修改bin文件夹下的jmeter.properties文件 搜索ISO,把“#sampler ...

  7. dynamic解析Http xml格式响应数据

    继续上一篇 构建RESTful风格的WCF服务 ,咱已经把服务端的数据和服务准备好了,客户端调用 wcf rest接口后如何解析xml?下面使用dynamic关键字解析来至于WCF REST XML响 ...

  8. json-lib-2.4-jdk15.jar所需全部JAR包.rar java jsoup解析开彩网api接口json数据实例

    json-lib-2.4-jdk15.jar所需全部JAR包.rar  java jsoup解析开彩网api接口json数据实例 json-lib-2.4-jdk15.jar所需全部JAR包.rar  ...

  9. php接口开发时,数据解析失败问题,字符转义,编码问题

    php接口开发时,数据解析失败问题,字符转义,编码问题 情景: A平台--->向接口请求数据---->接口向B平台请求数据---->B平台返回数据给接口---->接口返回数据给 ...

随机推荐

  1. Jetpack 架构组件 Lifecycle 生命周期 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. python3 AttributeError: module 'sklearn' has no attribute 'linear_model'

    以下导入方式报错 import sklearn lr = sklearn.linear_model.LinearRegression() # 需要导入sklearn的linear_model 修改导入 ...

  3. 条件随机场 (CRF) 分词序列谈之一(转)

    http://langiner.blog.51cto.com/1989264/379166 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.ht ...

  4. php命名空间的使用,同一个命名空间可以在多个文件中定义

    php namespace的使用,直接打印出已经定义的命名空间 直接上代码,a.php , b.php, c.php , main.php a.php <?php namespace A{ cl ...

  5. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十六)Structured Streaming中ForeachSink的用法

    Structured Streaming默认支持的sink类型有File sink,Foreach sink,Console sink,Memory sink. ForeachWriter实现: 以写 ...

  6. VC++ MFC应用程序项目文件2.cpp

    //GameServer.cpp: 定义应用程序的入口点. // #include "stdafx.h" #include "GameServer.h" #de ...

  7. C++结构变量数据对齐问题

    为了避免混淆.做例如以下规定,下面代码若不加特殊说明都执行于32位平台,结构体的默认对齐值是8,各数据类型所占字节数分别为 char占一个字节 int占四个字节 double占八个字节. 两个样例 请 ...

  8. jquery旋转图片

    今天介绍一款 jQuery 插件——jqueryrotate,它可以实现旋转效果.jqueryrotate 支持所有主流浏览器,包括 IE6.如果你想在低版本的 IE 中实现旋转效果,那么 jquer ...

  9. Objective-C 简介

    很少有人会想到 Objective-C 历史悠久,并且它实际上影响了很多其他的编程技术.比如, Java 编程语言和 Objective-C 就有很多共同点.原因就是在 Objective-C 的早期 ...

  10. 007-Go package 说明

    1:在项目src下面存在两个目录,每个目录里面各有一个go文件 2:add.go package test02 func Add(a int, b int) int{ return a + b } 注 ...