博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP 接口响应数据解析
阅读量:6480 次
发布时间:2019-06-23

本文共 1846 字,大约阅读时间需要 6 分钟。

转自:

作为产品线的支撑角色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连接的次数,支持高并发。

转载于:https://www.cnblogs.com/yadongliang/p/9665476.html

你可能感兴趣的文章
ClickStat业务
查看>>
spring3.0.7中各个jar包的作用总结
查看>>
Windows 10 /win10 上使用GIT慢的问题,或者命令行反应慢的问题
查看>>
Windows平台分布式架构实践 - 负载均衡
查看>>
iOS自定制tabbar与系统的tabbar冲突,造成第一次点击各个item图片更换选中,第二次选中部分item图片不改变...
查看>>
我的路上
查看>>
DB2与oracle有什么区别
查看>>
创建一个多级文件目录
查看>>
Picasa生成图片幻灯片页面图文教程
查看>>
svn status 显示 ~xx
查看>>
常用HiveQL总结
查看>>
[转]使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
查看>>
POJ 3311 Hie with the Pie(状压DP + Floyd)
查看>>
Security updates and resources
查看>>
DNS为什么通常都会设置为14.114.114.114
查看>>
Sqoop架构(四)
查看>>
golang copy函数
查看>>
《你有多少问题要请示》精华集粹
查看>>
打印图片
查看>>
SHOW CREATE DATABASE Syntax
查看>>