乾安网站建设,仿牌网站服务器,网站建设中一般要多久,如何做一名网站编辑RESTful API
什么是RESTful
REST一词#xff0c;是Roy Thomas Fielding在他2000年的博士论文中提出的。
Fielding是一个非常重要的人#xff0c;他是HTTP协议#xff08;1.0版和1.1版#xff09;的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所…RESTful API
什么是RESTful
REST一词是Roy Thomas Fielding在他2000年的博士论文中提出的。
Fielding是一个非常重要的人他是HTTP协议1.0版和1.1版的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所以他的这篇论文一经发表就引起了关注并且立即对互联网开发产生了深远的影响。
在这篇论文中Fielding将他对互联网软件的架构原则定名为REST即Representational State Transfer的缩写翻译为表述性状态转移
如果一个架构符合REST原则就称它为RESTful架构。
要理解RESTful最好的办法就是理解Representational State Transfer这个词组的意思。
资源(Resources)
资源就是网络上的一个实体它是一个具体的信息可以是一段文本一张图片一首歌一个种服务。可以通过一个URI指向它。要获取这个资源就可以通过它的URI访问它每一个资源的URI都是独一无二的标识符。
REST的作用对象就是资源也即是资源的表述性状态转移。
表现层(Representation)
资源是一种信息实体它可以有多种的表现形式。资源的具体呈现形式叫做它的表现层。
比如文本可以是txt格式表现也可以是HTML格式XML格式JSON格式表现等图片可以是JPG格式表现也可以是PNG格式表现。
状态转移
访问一个资源是一个客户端通过HTTP协议与服务端的互动过程。在这个过程中势必涉及数据和状态的变化。客户端通过不同的HTTP请求操作资源让其发生状态(创建更新删除等)的改变。
HTTP协议里有四个表示操作方式的动词GET、POST、PUT、DELETE。它们分别对应四种操作GET获取资源POST创建资源PUT更新资源DELETE删除资源。
总结
综上我们总结一下什么是RESTful架构
每个URI代表一种资源客户端和服务端之间传递这种资源的某种表现形式客户端通过HTTP方法对服务器资源进行操作实现状态的变化
RESTful API
网络应用程序分为客户端和服务端两部分或者前端后后端。当前的发展趋势就是前端设备层出不穷个人电脑手机平板各种移动设备......)。
因此必须有一种统一的机制方便不同的客户端与后端进行通信。所以导致了API架构的流行RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。
不同的开发人员对理论的理解以及根据实际项目的不同并没有形成一套非常明确的标准下面列出的是得到普遍公认和行之有效的设计。
版本
应该将API的版本号放入URL.
http://api.example.com/1.0/路径
路径又称终点(endpoint)表示API的具体网址。
在RESTful架构中每个网址代表一种资源所以网址中不应该有动词只能有名词而且所有的名词往往与数据库表的表名对应。一般来说数据库中的表都是同种记录的集合(collection)所以API中的名词也应该使用复数。
举例来说一个crm系统的api包含学生和课程信息则它的路径应该设计成下面这样。
http://api.example.com/1.0/students/
http://api.example.com/1.0/courses/http动词
对于资源的具体操作类型由http动词表示。
常用的http动词有下面五个括号里是对应的SQL命令。
GETSELECT从服务器取出资源一项或多项。
POSTCREATE在服务器新建一个资源。
PUTUPDATE在服务器更新资源客户端提供改变后的完整资源。
PATCHUPDATE在服务器更新资源客户端提供改变的属性局部更新。
DELETEDELETE从服务器删除资源。还有两个不常用的HTTP动词。
HEAD获取资源的元数据。
OPTIONS获取信息关于资源的哪些属性是客户端可以改变的。看下面的例子
GET /students列出所有学生
POST /students: 新建一个学生
GET /students/pk: 获取某个学生的信息
PUT /students/pk: 更新某个学生的全部信息
PATCH /students/pk: 更新某个学生的部分信息
DELET /students/pk: 删除某个学生过滤信息
如果记录数量很多服务器不可能一次将它们全部返回给用户。API应该提供参数过滤返回结果。
下面是场景的参数。
?limit10指定返回记录的数量
?offset10指定返回记录的开始位置。
?page2page_size100指定第几页以及每页的记录数。
?sortbynameorderasc指定返回结果按照哪个属性排序以及排序顺序。
?sex1指定筛选条件状态码
服务器向用户返回的状态码和提示信息常见的有以下一些方括号中是该状态码对应的HTTP动词。
200 OK - [GET]服务器成功返回用户请求的数据该操作是幂等的Idempotent。
201 CREATED - [POST]用户新建或修改数据成功。
202 Accepted - [*]表示一个请求已经进入后台排队异步任务
204 NO CONTENT - [DELETE]用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]用户发出的请求有错误服务器没有进行新建或修改数据的操作该操作是幂等的。
401 Unauthorized - [*]表示用户没有权限令牌、用户名、密码错误。
403 Forbidden - [*] 表示用户得到授权与401错误相对但是访问是被禁止的。
404 NOT FOUND - [*]用户发出的请求针对的是不存在的记录服务器没有进行操作该操作是幂等的。
406 Not Acceptable - [GET]用户请求的格式不可得比如用户请求JSON格式但是只有XML格式。
410 Gone -[GET]用户请求的资源被永久删除且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]服务器发生错误用户将无法判断发出的请求是否成功。