什么是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()

运行程序:

最新文章

  1. 百度app测试服务
  2. CodeIgniter_2 路由中定义伪静态 直接映射到相关的控制器
  3. 2015.8.1 bootstrap学习(个人每日学习的随笔,比较凌乱
  4. route命令(转)
  5. YYCache 设计思路
  6. <<深入Java虚拟机>>-第三章-垃圾收集器与内存分配策略-学习笔记
  7. Spring MVC 3.0 返回JSON数据的方法
  8. Android 常用权限
  9. OpenGrok的安装
  10. php基础之三 数组
  11. Android应用程序中的多个Activity的显示创建和调用
  12. java学习之异常笔记
  13. pyqt样式表语法笔记(中)--原创
  14. UVa 10341 - Solve It【经典二分,单调性求解】
  15. (1-1)SpringCloud-Eureka:服务的注册与发现
  16. eCharts使用图表简单示例
  17. python中type、object与class之间关系(一切皆对象)
  18. 20155321 《网络攻防》 Exp5 MSF基础应用
  19. [Java]如何把当前时间插入到数据库
  20. 7.11 cookie 失效后 ,重新登陆 页面 可能跳出 框架 ,只剩主题 部分 ,

热门文章

  1. viewpage轮播图
  2. 调度《Taint(污点) 和 Toleration(容忍)》
  3. Photoshop如何安装蓝湖插件
  4. 835. Image Overlap —— weekly contest 84
  5. How to refresh datasource args caller[X++]
  6. ()C++中的赋值运算符重载函数(operator=)
  7. Thinkphp3.2 cms之文章模块
  8. 18、Celery
  9. leetcode76set-matrix-zeroes
  10. Java并发原理层面:ReentrantLock中lock()、unlock()全解析