Restful

背景

网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备…)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"APIFirst"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。
在这里插入图片描述

定义

REST(表现层状态转换 Representational State Transfer) 指的是一种万维网软件架构风格。满足这种风格的应用程序或设计就是 RESTful。是Roy Fielding博士于2000年在他的博士论文中提出来的一种软件架构风格。

接口基本原则

1、安全可靠,高效易扩展

2、简单明了,可读性强,没有歧义

3、API风格统一,调用规则,传入参数和返回数据有统一的标准

RESTful的设计理念基于HTTP协议,设计原则:

1、HTTPS

    HTTPS为接口的安全提供了保障,可以有效防止通信被窃听和篡改,可以通过 cerbot等工具。 

Attention:非HTTPS的API调用,不要重定向到HTTPS。而要直接返回调用错误以禁止不安全的调用。

2、版本控制

第一种:将版本号直接加入到URL中

https://api.zoe.com/v1
https://api.zoe.com/v2

第二种:使用http请求头的accept字段进行区分(推荐)

Https://api.zoe.com/
Accept:application/prs.zoe.va+json
Accept:application/prs.zoe.va+json

4、用URL定位资源

  在 RESTful 架构中,每个网址代表一种资源,所以网址中不能有动词,只能有名词,而且所用的名词往往和数据库中的表名对应。一般来说,数据库中的表都是同种记录的 "集合",所以 API 中的名词也应该使用复数。

举例来说,有一个 API 提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成这样:

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

URI 中需要注意的几点:

  • 不用大写
  • 用中杠 - 不用下杠 _
  • 参数列表要 encode
  • URI 中名词表示资源集合,使用复数形式

5、用http动词描述操作
http设计了很多动词来表示不同的操作,RESTful吧这些利用的很好,来表明如何操作资源。

GET(SELECT):从服务器取出资源(一项或多项)
POST(CREATE):从服务器新建一个资源
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整属性)
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)
DELETE(DELETE):从服务器删除资源

下面是一些例子:

POST /zoos:新建一个动物园
GET /zoos/ID:获取某个指定动物园的信息
PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
DELETE /zoos/ID:删除某个动物园
GET /zoos/ID/animals:列出某个指定动物园的所有动物
DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物

7、正确使用状态码
在这里插入图片描述
8、统一返回数据格式
在这里插入图片描述

对比

REST与RPC
RPC风格曾是Web Service的主流,最初是基于XML-RPC协议,后来渐渐被SOAP协议(简单对象访问协议(Simple Object Access Protocol))取代;RPC风格的服务,不仅可以用HTTP,还可以用TCP或其他通讯协议。但RPC风格的服务,受开发服务采用语言的束缚比较大,如.net框架中,开发web service的传统方式是采用WCF,基于WCF开发的服务即RPC风格的服务,使用该服务的客户端通常要用c#来实现,如果使用Python或其他语言,很难实现可以直接与服务通信客户端。进入移动互联网时代后,RPC风格的服务很难在移动终端使用,而Restful风格的服务,由于可以直接以json或xml为载体承载数据,以HTTP方法为同意接口完成数据操作,客户算的开发不依赖于服务端实现的技术,移动端也可以轻松使用服务,这也加剧了Rest取代RPC为Web Service的主导
在这里插入图片描述
在这里插入图片描述

参考

RESTful API 设计学习笔记
细说API - 重新认识RESTful

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值