项目合作——Api请求
前言
api应当是所有开发人员都熟悉的词。特别是在需要长期稳定地进行数据交互的场景下,一个好的api接口尤为关键。
本文主要是从简单的数据交互出发,总结一下基于python的api请求。
工作流
首先设定这样一个场景:A是数据提供方,B是数据接收方。
那么这一套完整的工作流如下:
- A和B共同商定好数据传递方式与数据结构。
- A将需要的数据放入json中。
- A将该json数据部署到api上。
- B发起请求,请求api中的数据。
- B得到数据并进行相关处理。
json数据准备
以下内容来自百度百科:
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
简而言之,json是数据的载体,其结构简洁清晰,对于人和机器来说都比较友好。
在json中,有类似字典结构,也有类似数组结构。以下给出一个例子:
1 | { |
一般在实际的开发场景中,最好设定一个标志位来判定该接口是否有数据/是否响应成功。
requests请求
首先,我们需要引入以下两个包:
1 | import requests |
requests请求主要有两类:POST请求和GET请求。总的来说,流程可归纳如下:
- 设定api接口
- 构造请求参数(一般用作权限认证)
- 发起请求
- 处理数据
那么在参数设置上,POST和GET的区别如下:
POST: 参数一般位于请求体当中
GET: 参数一般位于你所输入的URL后面
而这个请求体,就是payload。以下给出两种请求方式的实例:
- POST方式
1 | #设定api接口 |
- GET方式
1 | #设定api接口 |
例子中的cookies非必需项,设置cookies是做权限控制的一般方式。
数据处理
得到数据之后,一般是将数据格式转换成json。
1 | data_json = json.loads(response.text) |
在我们之前给到的例子中,若是想得到值‘深圳’,则获取路径为:
1 | value = data_json['province'][1]['cities']['city'][1] |
总结
在实际的项目合作中,需要注意以下几点:
- 重视数据结构
AB双方应当事先约定好一套合理、规范且不易变动的数据结构。这对于数据提供方的要求较高。
- 设计科学的数据结构
首先尽量做到数据解耦。增强数据各个部分的独立性,这样方便日后增添或者删除数据。
其次,考虑数据结构如何设计才能表意明确、快速遍历等。
- 权限控制
如果接口不在公司内网,那么这一点更应该做到。
- 标志位设置
开发人员应当事先约定好标志位,用以判定是否请求到数据/请求的数据是否有效。