rest简介

一 什么是rest

rest是一种组织web服务的架构,一般用于客户端和服务端进行交互的程序。说白了就是前后台的通信的方式。这种通信方式只是基于HTTP做了一些约束而已。我们在设计rest架构的时候尽量尽量不要违反这些约束,不然会影响到很多功能的设计和rest系统的扩展。

为什么要使用rest

1、高并发

为了支撑高并发的访问,单机应用肯定不行,需要分布式系统,而rest能构建性能良好的分布式系统

2、跨平台

3、前后端分离

二 rest 原则

1、资源与URI

资源:html文件,xml,json,都是资源,资源是rest架构的核心概念,所有的设计都会以资源为中心,包括如何对资源进行添加,更新,查找以及修改等。

rest中URI应该是这个样子的:

1、URL 中不应该出现任何表示操作的动词,链接只用于对应资源

2、L 中应该单复数区分,推荐的实践是永远只用复数;比如 GET /api/users 表示获取用户的列表;如果获取单个资源,传入 ID,比如 /api/users/123 表示获取单个用户的信息;

3、按照资源的逻辑层级,对 URL 进行嵌套,比如一个用户属于某个团队,而这个团队也是众多团队之一;那么获取这个用户的接口可能是这样:GET /api/teams/123/members/234 表示获取 id 为 123 的小组下,id 为234 的成员信息

比如,下面这些URI都是不规范的

/api/getUser (用来获取某个用户的信息,还需要以参数方式传入用户 id 信息)
/api/updateUser (用来更新用户信息)
/api/deleteUser (用来删除单个用户)
/api/resetUser (重置用户的信息)

2、无状态

传统软件构建时,是考虑一个请求时,服务器内部进行什么样的逻辑处理。REST是站在资源的角度去考虑问题,提供什么样的资源,以及可以对资源进行那些操作。有点类似于面向过程编程和面向对象编程的思路转换。

用户浏览过程中可能需要与不止一个服务器进行交互。如果在服务端保存了有关客户的任何状态,那么在用户与不同服务器进行交互的时候,客户的状态就需要在这些服务之间进行同步,大大地增加了系统的复杂度。因此,REST要求客户端自行维护状态,并在每次发送请求的时候提供自身所储存的处理该请求所必需的信息。

一个Web请求都必须是独立的,请求之间是完全分离的

服务端不应该维护客户端的状态。如果使用了session那就违背了该条原则

无状态增加了在一系列请求中发送的重复数据(每次交互的开销),可能会降低网络性,正因为这个缺点,所以在REST风格中增加了缓存的考虑。

3、缓存

4、统一接口

CRUD对应POST/GET/PUT/DELETE

原文地址:https://www.cnblogs.com/lfxiao/p/9203128.html