[TOC]
* * * * *
# H1 这是一个一级标题 分类
## H2 这是一个二级标题 类
### H3 这是一个三级标题 属性
#### H4 这是一个四级标题 方法
##### H5 这是一个五级标题 参数
###### H5 这是一个六级标题 描述
> 说明:
>[info] 语法:
>[success] 备注:
>[warning] 示例:
>[danger] 警告:
`代码块`
~~~
代码行
~~~
# RESTful
> * 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。
> * 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。
> * 网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,如何开发在互联网环境中使用的软件。
>[success]RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。
> * Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。
> * 如果一个架构符合REST原则,就称它为RESTful架构。
> * 要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组到底是什么意思,它的每一个词代表了什么涵义。如果你把这个名称搞懂了,也就cc不难体会REST是一种什么样的设计。
### 接口规则
#### GET
>[success]
> * 安全且幂等
> * 获取表示
> * 变更时获取表示(缓存)
> * 200(OK) - 表示已在响应中发出
> * 204(无内容) - 资源有空表示
> * 301(Moved Permanently) - 资源的URI已被更新
> * 303(See Other) - 其他(如,负载均衡)
> * 304(not modified)- 资源未更改(缓存)
> * 400 (bad request)- 指代坏请求(如,参数错误)
> * 404 (not found)- 资源不存在
> * 406 (not acceptable)- 服务端不支持所需表示
> * 500 (internal server error)- 通用错误响应
> * 503 (Service Unavailable)- 服务端当前无法处理请求
#### POST
>[success]
> * 不安全且不幂等
> * 使用服务端管理的(自动产生)的实例号创建资源
> * 创建子资源
> * 部分更新资源
> * 如果没有被修改,则不过更新资源(乐观锁)
> * 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
>[success]
> * 不安全但幂等
> * 用客户端管理的实例号创建一个资源
> * 通过替换的方式更新资源
> * 如果未被修改,则更新资源(乐观锁)
> * 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
>[success]
> * 不安全但幂等
> * 删除资源
> * 200 (OK)- 资源已被删除
> * 301 (Moved Permanently)- 资源的URI已更改
> * 303 (See Other)- 其他,如负载均衡
> * 400 (bad request)- 指代坏请求
> * 404 (not found)- 资源不存在
> * 409 (conflict)- 通用冲突
> * 500 (internal server error)- 通用错误响应
> * 503 (Service Unavailable)- 服务端当前无法处理请求