什么是JSON?

一种轻量级的数据交换格式。它独立于语言和平台,JSON解析器和JSON库支持不同的编程语言。JSON具有自我描述性,很容易理解。

数据格式:

{
"name":"python",
"age":5
}

接口最常见的数据格式就是JSON,现在我们来实践一下如何开发JSON格式的API接口

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/api/sub/", methods=["POST"])
def sub():
if not request.json: # 如果请求数据类型非json
return jsonify({"code": "100001", "msg": "请求类型错误", "data": None}) if not "a" in request.json or not "b" in request.json: # 如果参数中没有a或者没有b
return jsonify({"code": "100002", "msg": "参数缺失", "data": None}) a = request.json.get("a")
b = request.json.get("b")
result = str(float(a) - float(b)) # 使用float支持浮点数相减
return jsonify({"code": "100000", "msg": "成功", "data": result}) # 使用jsonify将字典数据转换为json类型的相应数据 if __name__ == '__main__':
app.run(port=5005)

运行此接口

使用测试工具测试接口

这里需要注意的是此API需要传递的参数必须为JSON格式,否则会报类型错误,原因是JSON格式必须通过headers指定请求内容类型为json,Content-Type: application/json

添加headers后访问成功。

通过python代码测试上面的接口

  1. 必须通过headers指定内容类型为application/json: ```headers={"Content-Type":"application/json"}
  2. 请求数据要转化为字符串: data=json.dumps(data) (使用json.dumps需要import json)
  3. json格式的响应数据,在接口调试通过和稳定的情况下可以使用response.json()解析为字典格式,进行断言
import requests
import json base_url = "http://127.0.0.1:5005" def test_sub_normal():
url = base_url + "/api/sub/"
headers = {"Content-Type": "application/json"} # 1. 必须通过headers指定请求内容类型为json
data = {"a": "4", "b": "2"}
data = json.dumps(data) # 2. 序列化成字符串
response = requests.post(url=url, headers=headers, data=data)
# 3. 响应解析 # 响应格式为: {"code":"100000", "msg": "成功", "data": "2.0"}
resp_code = response.json().get("code")
resp_msg = response.json().get("msg")
resp_data = response.json().get("data")
print(resp_code, resp_msg, resp_data)
# 断言
assert response.status_code == 200
assert resp_code == "100000"
assert resp_msg == "成功"
assert resp_data == '2.0' if __name__ == "__main__":
test_sub_normal()

运行程序:

python接口测试3-JSON格式的更多相关文章

  1. python 把数据 json格式输出

    有个要求需要在python的标准输出时候显示json格式数据,如果缩进显示查看数据效果会很好,这里使用json的包会有很多操作 import json date = {u'versions': [{u ...

  2. python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换

    python进程中的实例和json格式的字符串之间的映射关系是非常直接的,相当于同一个概念被编码成不同的表示: stream in json form ----json.loads(str)----- ...

  3. python将json格式的数据转换成文本格式的数据或sql文件

    python如何将json格式的数据快速的转化成指定格式的数据呢?或者转换成sql文件? 下面的例子是将json格式的数据准换成以#_#分割的文本数据,也可用于生成sql文件. [root@bogon ...

  4. 中文格式python 打印json格式的数据中文显示问题

    废话就不多说了,开始... 平日会有这么一个应用场景,会用python去处置json格式的web API,以“ip.taobao.com”的API为例,详情见http://ip.taobao.com/ ...

  5. Python将JSON格式数据转换为SQL语句以便导入MySQL数据库

    前文中我们把网络爬虫爬取的数据保存为JSON格式,但为了能够更方便地处理数据.我们希望把这些数据导入到MySQL数据库中.phpMyadmin能够把MySQL数据库中的数据导出为JSON格式文件,但却 ...

  6. Python第八天——Json

    json 模块 json 模块提供了非常完善的 Python 对象到 JSON 格式的转换 import json d = dict(name='Bob',age=20,score=88) json. ...

  7. Python常用模块--json

    官方解释: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.人类很容易读写.机器很容易解析和生成.它基于 JavaScript编程语言的一部分, 标准ECM ...

  8. csv,json格式数据的读写

    #!python3 # -*- coding:utf-8 -*- #CSV stands for "comma-separated values",and CSV files ar ...

  9. python字典转化成json格式。JSONEncoder和JSONDecoder两个类来实现Json字符串和dict类型数据的互相转换

    遇到问题:进行Webservice接口测试时,对接口入参数据进行了处理,变成了dict格式,去进行接口请求报错. 需要转成成json格式,双引号去扩. 如下: 更改代码: # 在Python标准库的j ...

  10. python 在unix下json格式显示结果

    在使用命令号输出接口测试结果,发现无法按照期望的json格式进行显示.查阅资料发现python自带强大的工具. 直接上代码: import os,requests url = XXXXXX conte ...

随机推荐

  1. windows.h和WinSock2.h出现重定义API

    有两种常用的解决方法:1.把WinSock2.h写在windows.h之前   2.使用宏定义#define WIN32_LEAN_AND_MEAN

  2. MYSQL 那些事

    1.一条update语句 1.先通过引擎找到对应的行数据,并加锁 2.对行数据进行修改并调用引擎接口修改这条数据,然后释放锁(此时并没有把数据在磁盘上做出修改) 3.redo log在内存中生成这条u ...

  3. 关于数据源为授权车辆、企业车辆的判断(限foton)

    int mode = carInfoService.getCompanyCarMode(companyId); public int getCompanyCarMode(Long companyId) ...

  4. Verification of WISHBONE I2C Master Core(IRUN+Simvision)

    一.前言 很久没写技术博客了,有些懈怠,生活还得继续折腾.转眼工作一年多,时间越长越发觉得自己知之甚少,当然这跟IC行业技术密集有关.用空余时间在opencores网站上下载些小的IP看看 验证下,让 ...

  5. win10 hyper-v的开启和关闭

    一.开启: 1. 控制面板->程序->启用或关闭Windows功能,Windows功能中勾选hyper-v功能 2. powershell中使用管理员权限运行下面的命令 bcdedit / ...

  6. python实现常见的设计模式

    Pyhton实现常用的23种设计模式[详解] 关注公众号[轻松学编程],回复[设计模式],获取本文源代码. 在文章末尾可以扫码关注公众号. 一.概念 软件工程中,设计模式是指软件设计问题的推荐方案. ...

  7. [Luogu P3455] [POI2007]ZAP-Queries (莫比乌斯反演 )

    题面 传送门:洛咕 Solution 这题比这题不懂简单到哪里去了 好吧,我们来颓柿子. 为了防止重名,以下所有柿子中的\(x\)既是题目中的\(d\) 为了方便讨论,以下柿子均假设\(b>=a ...

  8. JS中this的指向性问题

    一.this用于访问当前方法所属的对象,谁调用的方法,方法就属于谁 // 普通函数 let obj = { a : 12, fn() { console.log(this == obj); // tr ...

  9. 7_Reverse Integer

    7.Reverse Integer Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 ...

  10. ajax传值出现乱码问题

    第一种:前台传值到后台,浏览器控制台打印正常,controller接收后成了乱码. 后台controller层加上两行转换代码 name=URLDecoder.decode(name,"ut ...