restful接口规范

-

RESTful(Representational State Transfer)表述性状态转移

restful原则可以由以下这些概念进行解释。

  • 资源与URI
  • 统一资源接口
  • 资源的表述
  • 资源的链接
  • 状态的转移

资源与URI

表述性状态转移,表述的是什么?其实就是资源。

资源:任何事物,只要有被引用到的必要,它就是一个资源。比如手机号,是实体。也可以是个抽象的概念,比如 手机号的价值。

uri:uri就是资源的唯一标识。也可以看成资源地址。

URI的设计应该遵循可寻址性原则,具有自描述性,需要在形式上给人以直觉上的关联

URI设计上的一些技巧:

1、使用_或-来让URI可读性更好

http://www.oschina.net/news/38119/oschina-translate-reward-plan。

2、使用/来表示资源的层级关系

/git/git/commit/e3af72cdafab5993d18fae056f87e1d675913d08 // git用户的git项目的某次提交记录

3、使用?用来过滤资源

/pulls?state=closed // 用来表示git项目中已经关闭的推入请求

4、,或;可以用来表示同级资源的关系

/git/git /block-sha1/sha1.h/compare/e3af72cdafab5993d18fae056f87e1d675913d08;bd63e61bdf38e872d5215c07b264dcc16e4febca   // github可以比较某个文件在随意两次提交记录之间的差异

统一资源接口

统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问

get: 获取表示

post: 创建资源

put: 更新资源

delete: 删除资源

资源的表述

客户端获取的只是资源的表述而已。资源在外界的具体呈现,可以有多种表述:html、xml、json

HTTP头"Content-Type" 就可以来表述资源

Content-Type: application/json; cahrset=utf-8;

资源的链接

 在表述格式里边加入链接来引导客户端。

下面展示的是github获取某个组织下的项目列表的请求,可以看到在响应头里边增加Link头告诉客户端怎么访问下一页和最后一页的记录。 而在响应体里边,用url来链接项目所有者和项目地址。

 

 

状态的转移

 REST原则中的无状态通信原则。

这里说的无状态通信原则,并不是说客户端应用不能有状态,而是指服务端不应该保存客户端状态。

 客户端负责维护应用状态,而服务端维护资源状态。

 

服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入。

这些类似"下一页"之类的链接起的就是这种推进状态的作用——指引你如何从当前状态进入下一个可能的状态。

-

posted @ 2022-07-17 00:06  古墩古墩  Views(162)  Comments(0Edit  收藏  举报