关于rest:
0.提出
·Roy Fielding博士2000年提出
“设计良好的网络应用表现为一系列的网页,这些网页可以看作虚拟的状态机,
用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。”
1.概念和准则
·所有事物均是资源
·资源都有唯一的标识
·有通用的链接器接口对资源进行操作
·操作不会修改资源标识
·操作是无状态的
2.要点和标准
·资源由URI指定
·资源的操作对应HTTP的GET,POST,PUT,DELETE方法
·通过操作资源的表现形式来操作资源
·资源的表现形式取决于使用者
3.要求
·C/S架构
·协议无状态
·能够使用cache机制提高性能
·层次化的结构
·随需代码
4.状态
·对于连接的无状态实际上要求,经过无状态的连接,传送的信息需包含应用的所有状态。
5.方法以及应用
资源 | GET | PUT | POST | DELETE |
---|---|---|---|---|
一组资源的URI, 比如/xxx/yyy | 列出 URI,以及该资源组中每个资源的详细信息 (后者可选)。 | 使用给定的一组资源替换当前整组资源。 | 在本组资源中创建/追加一个新的资源。 该操作往往返回新资源的URL。 | 删除 整组资源。 |
单个资源的URI, 比如 /xxx/yyy/zzz | 获取 指定的资源的详细信息, 格式可以自选一个合适的网络媒体类型 (比如:XML、JSON等) | 替换/创建 指定的资源。 并将其追加到相应的资源组中。 | 把指定的资源当做一个资源组, 并在其下创建/追加一个新的元素, 使其隶属于当前资源。 | 删除 指定的元素。 |
PUT 和 DELETE 方法是幂等方法。GET方法是安全方法 (不会对服务器端有修改,因此也是幂等的)。
☆幂等方法:没有副作用,或者若干次的请求和单词请求相同。
☆安全方法:没有副作用
6.举例
·列举所有xxx
GET /bbb/xxx
·具体xxx
GET /aaa/bbb/xxx
·追加xxx
POST /aaa/xxx
name:xxx