0%

初识web API接口及Restful接口规范

明确了请求方式,提供对应后台所需参数,请求url链接可以得到后台的响应数据
url : 返回数据的url
https://api.map.baidu.com/place/search
请求方式:
get,post,put,patch….

请求参数:json或xml格式的key-value类型数据

  • ak:6E823f587c95f0148c19993539b99295
  • region:上海
  • query:肯德基
  • output:json

响应结果:
返回json或xml格式的key-value类型数据

  • 上方请求参数的output参数值决定了响应数据的格式

参照某种规则(规范)书写url链接,同时根据规则制定请求方式,请求数据与响应结果

提供给前后台开发人员与测试人员查看

YAPI平台

专门写接口文档的YAPI平台 http://yapi.demo.qunar.com/

YApi是去哪儿网的前端技术中心的一个开源可视化接口管理平台

img

  • 创建接口项目

img

  • 创建接口

img

  • 编写接口

img

img

img

接口测试工具:Postman

Postman是一款接口调试工具,是一款免费的可视化软件,同时支持各种操作系统平台,是测试接口的首选工具。

Postman可以直接从官网:https://www.getpostman.com/downloads/下载获得,然后进行傻瓜式安装。

  • 工作面板

img

  • 简易的get请求

img

  • 简易的post请求

img

  • 案例:请求百度地图接口

img

webapi接口规范:restful

REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”。

推荐阅读 阮一峰 理解RESTful架构

推荐阅读 阮一峰 RESTful设计指南

API与用户的通信协议

总是使用HTTPs协议

域名

用api关键字来标识接口url

https://api.example.com

https://example.org/api/

注:看到api字眼,就代表该请求url链接是完成前后台数据交互的

版本

\1. 将版本信息放在URL中,如:

https://api.example.com/v1/

https://api.example.com/v2/

v1,v2代表不同数据版本的提现,前提是一种数据资源有多个版本

\2. 将版本信息放在请求头中。

url路径

视网络上任何东西都是资源,均使用名词表示(一般为复数形式)

https://api.example.com/v1/zoos

https://api.example.com/v1/animals

https://api.example.com/v1/employees

在url链接中奖励不要出现操作资源的动词

错误示范:https://api.baidu.com/delete-user

特殊的接口可以出现动词,因为这些接口一般没有一个明确的资源,或是动词就是接口的核心含义

method请求方式

GET :从服务器取出资源(一项或多项)

POST :在服务器新建一个资源

PUT :在服务器更新资源(客户端提供改变后的完整资源)

PATCH :在服务器更新资源(客户端提供改变的属性)

DELETE :从服务器删除资源

过滤

通过在url上传参的形式传递搜索条件

https://api.example.com/v1/zoos?limit=10:指定返回记录的数量

https://api.example.com/v1/zoos?offset=10:指定返回记录的开始位置

https://api.example.com/v1/zoos?page=2&per_page=100:指定第几页,以及每页的记录数

https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序

https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件

状态码

错误处理

状态码是4xx时,应返回错误信息,error当做key。    

返回结果

针对不同操作,服务器向用户返回的结果应该符合以下规范

Hypermedia API

RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。

__EOF__