web API接口及restful标准详解
什么是web API接口?
明白了恳求方式,供给对应后台所需参数,恳求url链接可以得到后台的响应数据
恳求方式:get,post,put,patch....
恳求参数:json或xml格局的key-value类型数据
响应结果:返回json或xml格局的key-value类型数据
如何写接口?
参照某种规则(标准)书写url链接,同时按照规则拟定恳求方式,恳求数据与响应结果
接口标准:webapi接口标准:restful
RESTful介绍
REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“展现层状态转化”。
域名
用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
非凡的接口可以显现动词,由于这些接口一样没有一个明白的资源,或是动词就是接口的中心含义
https://api.baidu.com/place/search https://api.baidu.com/login
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:指定挑选前提
状态码
200 OK - [GET]:效劳器成功返回会员恳求的数据,该操纵是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:会员创建或修改数据成功。
202 Accepted - [*]:表示一个恳求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:会员删除数据成功。
301:永远重定向
302:临时重定向
400 INVALID REQUEST - [POST/PUT/PATCH]:会员发出的恳求有错误,效劳器没有停止创建或修改数据的操纵,该操纵是幂等的。
401 Unauthorized - [*]:表示会员没有权限(令牌、会员名、密码错误)。
403 Forbidden - [*] 表示会员得到授权(与401错误相对),但是拜访是被制止的。
404 NOT FOUND - [*]:会员发出的恳求针对的是不存在的记载,效劳器没有停止操纵,该操纵是幂等的。
406 Not Acceptable - [GET]:会员恳求的格局不成得(比方会员恳求JSON格局,但是只要XML格局)。
410 Gone -[GET]:会员恳求的资源被永远删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创立一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:效劳器发生错误,会员将没法推断发出的恳求可否成功。
错误处置
状态码是4xx时,应返回错误信息,error当做key。
{ error: "Invalid API key" }
返回结果
针对不一样操纵,效劳器向会员返回的结果应当相符以下标准
GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完全的资源对象
PATCH /collection/resource:返回完全的资源对象
DELETE /collection/resource:返回一个空文档
{ "status": 0, "msg": "ok", "results":[ { "name":"肯德基(罗餐厅)", "location":{ "lat":31.415354, "lng":121.357339 }, "address":"月罗路2380号", "province":"上海市", "city":"上海市", "area":"宝山区", "street_id":"339ed41ae1d6dc320a5cb37c", "telephone":"(021)56761006", "detail":1, "uid":"339ed41ae1d6dc320a5cb37c" } ... ] }
Hypermedia API
RESTful API最好做到Hypermedia,即返回结果中供给链接,连向其他API办法,使得会员不查文档,也知道下一步应当做什么。
{"link": { "rel": "collection https://www.example.com/zoos", "href": "https://api.example.com/zoos", "title": "List of zoos", "type": "application/vnd.yourformat+json" }}
更多PHP相关知识,请拜访PHP中文网!
以上就是web API接口及restful标准详解的具体内容,更多请关注百分百源码网其它相关文章!