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连接的次数,支持高并发。
HTTP 接口响应数据解析的更多相关文章
- 使用 yapi-to-typescript 生成接口响应数据的 TS 类型声明
TS 是越写越爽,但是很不爽的是接口响应数据一堆,每次要去手写很麻烦. 最近正好后端接口文档从一个垃圾工具切换到了 Yapi,然后去搜了下可以通过接口文档自动生成 TS 类型声明,就自己搞了下,还是很 ...
- Spring Cloud Zuul记录接口响应数据
系统在生产环境出现问题时,排查问题最好的方式就是查看日志了,日志的记录尽量详细,这样你才能快速定位问题. 如果需要在Zuul中进行详细的日志记录,这两种日志必不可少. API请求信息 API响应信息 ...
- 如何实现从登录接口响应数据中提取JSESSIONID
通过调用接口,对服务器产生压力,单接口测试,会遇到响应数据返回的是要求先登录.这是我们在调用这个接口时,根据业务逻辑,必须先登录才可以,比如:提交订单,那么就需要先获取用户登录的JSESSIONID, ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-模拟接口响应数据(18)
这里是把传入的请求数据作为响应值返回 # -*- coding: utf-8 -*- # @Time : 2020/2/15 9:47 # @File : do_mock_18.py # @Autho ...
- Jmeter—添加断言 判断接口响应数据是否符合预期
发出请求之后,通过添加断言可以判断响应数据是否是我们的预期结果. 1 在Jmeter中发送一个状态返回200的http请求(参数故意输入错误).结果肯定是不是返回200啦. 但结果树中http请求的图 ...
- JMeter接口响应数据出现乱码的三种解决方法
第一种方法: Content encoding设置为utf-8,若仍为乱码,请用方法2 图1 第二种方法: 修改bin文件夹下的jmeter.properties文件 搜索ISO,把“#sampler ...
- dynamic解析Http xml格式响应数据
继续上一篇 构建RESTful风格的WCF服务 ,咱已经把服务端的数据和服务准备好了,客户端调用 wcf rest接口后如何解析xml?下面使用dynamic关键字解析来至于WCF REST XML响 ...
- 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 ...
- php接口开发时,数据解析失败问题,字符转义,编码问题
php接口开发时,数据解析失败问题,字符转义,编码问题 情景: A平台--->向接口请求数据---->接口向B平台请求数据---->B平台返回数据给接口---->接口返回数据给 ...
随机推荐
- 一个可用来记录Isilon各个节点的CPU,网络,磁盘性能的命令
通过查看命令isi statistics system的帮助信息,拼出了下面的命令. isi statistics system list --nodes=all --degraded --forma ...
- Android 资源混淆 AndResGuard MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- [Javascript] Check both prop exists and value is valid
Sometime you need to check one prop exists on the object and value should not be ´null´ or ´undefine ...
- 【python】安装bencode
C:\Users\horn1\Desktop\python\35-pytorrent>pip install bencodeCollecting bencode Downloading http ...
- oracle 学习blogs
http://blog.sina.com.cn/s/blog_5dfbafd20100sxv7.html
- css样式小技巧
1.css样式小技巧 HTML怎样设定使背景图片不随页面滚动而滚动 background-attachment:fixed; 2.实现li a 超过长度内容出现省略号… overflow:hidden ...
- LintCode: Triangle
C++ 逆推 class Solution { public: /** * @param triangle: a list of lists of integers. * @return: An in ...
- Sqlite执行insert or ignore 或insert or replace语句。
Sqlite执行insert or ignore 或insert or replace语句. ,); ,); 上面的第一条语句是每次执行时,如果不存在,则添加,如果存在,则更新. 上面的第二条语句是每 ...
- 如何设置Vmware下Linux系统全屏显示
环境:Vmware10+RedHat5 在Vmware10中安装好RedHat5后,即使点击了全屏按钮(或使用快捷键Ctrl+Alt+Enter),全屏的效果依然不尽人意,跟下图中差不多,RedHat ...
- 使用MAVEN打JAR,直接使用
一.简单的方法: 首先在pom.xml里面添加: <build> <plugins> <plugin> <artifactId>maven-assemb ...