restful服务(RESTful服务端API设计风格)

http://www.itjxue.com  2023-01-26 11:15  来源:未知  点击次数: 

什么是 restful?

RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。

RESTful架构是对MVC架构改进后所形成的一种架构,通过使用事先定义好的接口与不同的服务联系起来。在RESTful架构中,浏览器使用POST,DELETE,PUT和GET四种请求方式分别对指定的URL资源进行增删改查操作。因此,RESTful是通过URI实现对资源的管理及访问,具有扩展性强、结构清晰的特点。

RESTful架构将服务器分成前端服务器和后端服务器两部分,前端服务器为用户提供无模型的视图;后端服务器为前端服务器提供接口。浏览器向前端服务器请求视图,通过视图中包含的AJAX函数发起接口请求获取模型。

项目开发引入RESTful架构,利于团队并行开发。在RESTful架构中,将多数HTTP请求转移到前端服务器上,降低服务器的负荷,使视图获取后端模型失败也能呈现。但RESTful架构却不适用于所有的项目,当项目比较小时无需使用RESTful架构,项目变得更加复杂。

什么是RESTful

先看REST是什么意思,英文Representational state transfer 表述性状态转移 其实就是对 资源 的表述性状态转移。

简单的说:RESTful是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构。

资源的地址 在web中就是URL (统一资源标识符)

资源是REST系统的核心概念。 所有的设计都是以资源为中心

结合项目怎么识别资源

1.商品加入购物车 购物车

2.提交订单 订单

3.创建用户 用户

围绕资源进行 添加,获取,修改,删除,以及对符合特定条件的资源进行列表操作 。针对资源设计接口

RESTful 架构的核心规范与约束:统一接口

分为四个子约束:

1.每个资源都拥有一个资源标识,每个资源的资源标识可以用来唯一地标明该资源

2.消息的自描述性

3.资源的自描述性。

4.HATEOAS Hypermedia As The Engine Of Application State(超媒体作为应用状态引擎)

即客户只可以通过服务端所返回各结果中所包含的信息来得到下一步操作所需要的信息,如到底是向哪个URL发送请求等。也就是说,一个典型的REST服务不需要额外的文档标示通过哪些URL访问特定类型的资源,而是通过服务端返回的响应来标示到底能在该资源上执行什么样的操作

目的:实现客户端无需借助任何文档即能调用到所有的服务器资源

三、资源的URL设计

1.通过URL来表示资源

资源分为主资源与子资源

因为主资源是一类独立的资源 所以主资源应直接放在相对路径下:例如

若要表示主资源的实例:如果实例的ID=1,则这样表示: /goods/1

子资源:

一个实例的子资源可能是一个集合也可能是一个单一的子资源

子资源为图片集合:/goods/1/pictures

子资源为商品折扣的单子子资源:/goods/1/discount

2.单数 vs. 复数

获取用户1的信息,哪种方式更符合RESTful?

/api/users/1

/api/user/1

3.相对路径 vs. 请求参数

极光的RESTful API:

获取用户信息 GET /v1/users/{username} 参数放在路径中

VS

获取用户信息 GET /v1/users?username=xxxxx 拼接的方式

获取应用管理员列表 GET /v1/admins?start={start}count={count} ?后拼接参数的方式:这种方式一般作为过滤资源

4.使用合适的动词 get delete put post

选择请求接口的方式: get delete

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

POST 在服务器新建一个资源

5.使用标准的状态码

GET

hello world!!!

REST和RESTFUL

REST(Representational State Transfer),表述性状态转移,定义了互联网架构原则,是一种架构风格,具体原则如下:

1.互联网所有资源都可以被抽象为资源

2.每个资源都有唯一的资源标识符

3.同一个资源具有多个表现形式(可以是json,xml等等)

4.对资源的操作不会改变资源标识符

5.所有的操作都是无状态的

主要是就是说互联网上的资源可以用一种规则来表示,对资源的操作是无状态的。

RESTFUL,是指遵守rest规则的web服务,restful是一种ROA(Resource Oriented Architecture,面向资源的架构),restful的核心概念就是资源(Resource)。

互联网中客户端和服务端的交互就是资源的表述,这种表述是无状态的,也就意味着服务端要报错资源的所有状态,客户端可以通过http协议按照规定的规则访问或者改变资源的状态,就是所谓的“表述性状态转移”。

具体表现形式如下:

GET /users 获取用户列表

GET /users/1 获取id(主键)为1的用户

POST /users 创建用户

PUT /users/1 修改id为1的用户(整条数据替换)

PATCH /users/1 修改id为1的用户(数据局部字段替换)

DELETE /users/1 删除id为1的用户

简单来说就是通过请求方法名来表示行为,url来表示操作的资源

更多例子:

GET /users/1/products 获取id为1用户下的产品列表

GET /users/1/products/1 获取id为1用户下的id为1的产品

GET /users/name/aaa/products 获取name为aaa的用户下的产品列表

GET /users/name/aaa/products/name/ppp 获取name为aaa的用户下的名为ppp的产品

POST /users/1/products id为1的用户下创建一个产品

PUT /users/1/products/1 修改id为1的用户下的id为1的产品(整条数据替换)

PATCH /users/1/products/1 修改id为1的用户下的id为1的产品(数据局部字段替换)

DELETE /users/1/products/1 修改id为1的用户下的id为1的产品

什么是 RESTful 到底 REST 和 SOAP,RPC 有何区别

第一个问题:什么是RESTful?

REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。有兴趣可以看看这里论文`,谁是Fielding?点击前面名字了解。

那RESTful到底是什么呢?简单的讲,它是:一种架构设计风格,提供了设计原则和约束条件,而不是架构。而满足这些约束条件和原则的应用程序或设计就是 RESTful架构或服务。

推荐阅读:

张善友博客——REST 入门介绍

infoq——深入浅出REST

第二个问题:到底 REST 和 SOAP、RPC 有何区别?

这个问题比较大,要知道他们有什么区别首先需要明白,他们分别是什么?

REST上面已经简单的说明了它是什么。

SOAP(简单对象访问协议)是什么?SOAP是一种数据交换协议规范,是一种轻量的、简单的、基于XML的协议的规范。它有什么优点?简单总结为: 易用,灵活,跨语言,跨平台。

易用:是因为它的消息是基于xml并封装成了符合http协议,因此,它符合任何路由器、 防火墙或代理服务器的要求。

灵活:表现在极具拓展性,SOAP 无需中断已有的应用程序, SOAP 客户端、 服务器和协议自身都能发展。而且SOAP 能极好地支持中间介质和层次化的体系结构。

跨语言:soap可以使用任何语言来完成,只要发送正确的soap请求即可。

跨平台:基于soap的服务可以在任何平台无需修改即可正常使用。

RPC(远程调用框架) 是一种允许分布式应用程序调用网络上不同计算机的可用服务的机制。涉猎不多,一下省略256个字。有熟悉的朋友可以在评论补充,然后我会修改到该内容中去

从上面我们可以看出,REST 和 SOAP、RPC 有何区别呢?没什么太大区别,他们的本质都是提供可支持分布式的基础服务,最大的区别在于他们各自的的特点所带来的不同应用场景。

REST可以看着是http协议的一种直接应用,默认基于json作为传输格式,使用简单,学习成本低效率高,~~但是安全性较低~~,而SOAP可以看着是一个重量级的协议,基于xml,SOAP在安全方面是通过使用XML-Security和XML-Signature两个规范组成了WS-Security来实现安全控制的,当前已经得到了各个厂商的支持,.net ,php ,java 都已经对其有了很好的支持 。这是REST薄弱的地方。

(责任编辑:IT教学网)

更多

推荐excel文章