rest风格的rest (representation alstatetransfer )表象化状态转移(表现状态转移)提出于2000年,基于HTTP、URI、XML、JSON等标准和协议

rest风格体系结构的主要原则是网络上的所有资源都有资源标记。 对资源的操作不会更改标识符。 同一资源有多种表示形式(xml、json ) (所有操作都是无状态的) )根据上述REST原则的体系结构方法称为REST风格

REST风格介绍了REST风格是一种常见的REST APP应用程序,是符合REST风格的web服务,而基于rest风格的web服务是面向资源的体系结构(ROA )。

简而言之,rest风格是体系结构的规范、约束和原则,符合该规范的体系结构就是rest风格的体系结构。

rest风格的规范和约束rest风格的体系结构的核心规范和约束:统一接口

分为四个子约束:

1 .每个资源都有一个资源id,您可以使用每个资源的资源id来唯一标识该资源

2 .消息的自描述性

3 .资源的自我描述性。

4.hateoashypermediaastheengineofapplicationstate (超媒体作为应用状态引擎) )。

也就是说,客户端只需要服务器返回的每个结果中包含的信息,就可以得到下一个操作所需的信息,例如向哪个URL发送了请求等。 这意味着,典型的REST服务不需要其他文档来说明从哪个URL访问特定类型的资源,而服务端返回的响应可以指示该资源上可以执行哪些操作

目的:允许客户端在不使用文档的情况下调用所有服务资源

REST资源操作http方法资源操作幂等安全的GETSELECT是POSTINSERT还是PUTUPDATE还是delete delete rest ful根据操作资源使用不同的http方法,其传输的介质一般使用json

rest风格的设计基准宾语必须是名词宾语,是API的URL,是HTTP动词作用的对象。 它应该是名词,不能是动词。 例如,名为/articles的URL是正确的,但下面的URL不是名词,所以都是错误的。

/getallcars/create new car/deleteallredcars既然多个URLURL是名词,应该使用复数还是单数?

这没有统一的规定,但常见的操作是读取GET /articles (读取所有文章)这样的一个集合,这里应该明显是多个。

为了统一,建议使用多个URL。 例如,GET /articles/2优于GET /article/2。

避免多级URL的常见情况是,由于需要将资源分为多个级别,因此可以很容易地创建多级URL,如检索某个作者的某类文章。

GET /authors/12/categories/2这样的URL不利于扩展,意思也不清楚,在明白意思之前往往需要考虑一段时间。

更好的方法是,级别1以外的级别用查询字符串表示。

GET /authors/12? categories=2以下是另一个示例,查看已发布的文章。 你可能会设计成下一个网址。

GET /articles/published查询字符串的写法显然很好。

GET /articles? published=true接口的传统URL示例:

http://127.0.0.1/user/query/1 GET根据用户id向用户数据http://127.0.0.1/user/save POST发送用户3358127.0.0.0.1

http://127.0.0.1/user/{ id }根据get用户id查询用户数据http://127.0.0.1/user POST修改用户信息http://127.0.0

添加新

更新

删除

如果rest风格的状态代码GET安全且幂等检索显示更改,则显示(缓存) 200 ) ok (在响应中204 )无内容)资源空闲显示301 )移动性能(资源uri 303 ) 负载平衡(304 (未修改) -未更改资源(缓存) 400 (bad请求) -错误请求)例如,参数错误(404 ) notfound )–

e Unavailable)- 服务端当前无法处理请求POST不安全且不幂等使用服务端管理的(自动产生)的实例号创建资源创建子资源部分更新资源如果没有被修改,则不过更新资源(乐观锁)200(OK)- 如果现有资源已被更改201(created)- 如果新资源被创建202(accepted)- 已接受处理请求但尚未完成(异步处理)301(Moved Permanently)- 资源的URI被更新303(See Other)- 其他(如,负载均衡)400(bad request)- 指代坏请求404 (not found)- 资源不存在406 (not acceptable)- 服务端不支持所需表示409 (conflict)- 通用冲突412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)415 (unsupported media type)- 接受到的表示不受支持500 (internal server error)- 通用错误响应503 (Service Unavailable)- 服务当前无法处理请求PUT不安全但幂等用客户端管理的实例号创建一个资源通过替换的方式更新资源如果未被修改,则更新资源(乐观锁)200 (OK)- 如果已存在资源被更改201 (created)- 如果新资源被创建301(Moved Permanently)- 资源的URI已更改303 (See Other)- 其他(如,负载均衡)400 (bad request)- 指代坏请求404 (not found)- 资源不存在406 (not acceptable)- 服务端不支持所需表示409 (conflict)- 通用冲突412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)415 (unsupported media type)- 接受到的表示不受支持500 (internal server error)- 通用错误响应503 (Service Unavailable)- 服务当前无法处理请求DELETE不安全但幂等删除资源200 (OK)- 资源已被删除301 (Moved Permanently)- 资源的URI已更改303 (See Other)- 其他,如负载均衡400 (bad request)- 指代坏请求404 (not found)- 资源不存在409 (conflict)- 通用冲突500 (internal server error)- 通用错误响应503 (Service Unavailable)- 服务端当前无法处理请求