对Restful的理解

对Restful API的理解

REST:Representation State Transfer的缩写,翻译:“具象状态传输”。一般解释为“表现层状态转换”。

REST是一种设计风格而不是一种必须遵循的标准。是指客户端和服务器的交互形式。我们需要关注的重点是如何设计REST风格的网络接口。

REST特点

具象

一般指表现层,要表现的对象就是资源,比如客户端访问服务器获取数据就是资源。比如文字,图片,音视频等。

表现

资源的表现形式。txt格式 html格式 json格式 jpg格式等。浏览器通过URL确定资源的位置,但是需要在HTTP请求头中,用Accept和Content-Type字段来指定,这两个字段是对资源标签的描述

状态转换

客户端和服务器交互的过程。在这个过程中,一定会有数据和状态的转化,这种转化叫做状态的转换,其中,GET表示获取资源,POST表现新建资源,PUT表示更新资源,DELETE表示删除资源。HTTP协议中最常用的就是这四种操作方式。

RESTFUL架构

每一个url表示一种资源(一切皆资源ROA)

客户端和服务端之间,传递这种资源的某种表现层

客户端通过四个HTTP动词,对服务器资源进行操作,实现表现层状态的转换

如何设计符合RESTFUL风格的API

1.域名

将api部署在专用域名下

或者将api放在主域名下

 

2.版本

将API的版本号放在url中

3.路径

路径表示API的具体网址,每个网站代表一种资源,资源作为网址,网址中不能有动词只能有名词,一般名词要与数据库的表名对应。而且名词要用复数。

错误示例

正确示例

 获取单个商品

 

获取所有商品

 

4.使用标准的HTTP方法

对应资源的具体操作类型,由HTTP动词表示。常用的HTTP动词有四个。

获取指定商品的信息

新建商品的信息

 

更新知道商品的信息

 

删除指定商品的信息

补充:细心的你可能会有疑问,对数据的查看GET有两种情况,一种是查看所有的数据,一种是查看确定的某条数据,那这个该怎么区分?

至于这个如果是用Django并且导入了rest_framework框架,会发现该框架对上面这常用的四个方法做了起别名,并且路由中必须设置两个url来对应一张模型表的所有数据的查,新增一条数据。

确定的某一条数据的查,修改,以及删除操作。具体如何实现可以参考我之前写的rest_framework源码解析的几篇博客~

5.过滤信息

如果资源数据较多,服务器不能将所有的数据一次全部返回给服务端,API应该提供参数,过滤返回结果。实例

指定返回数据的数量

指定返回数据的开始位置

指定第几页,以及每页数据的数量

6.状态码

服务器向用户返回的状态码和提示信息,常用的有

7.错误信息

一般来说,服务器返回的错误信息,以键值对的形式返回

8.响应结果

9.使用链接关联相关的资源

在返回响应结果的时候提供链接其他API的方法,使客户端很方便的获取相关联的信息

10.其他

服务器返回的数据格式应该尽量使用JSON避免使用XML

 

posted @ 2018-08-04 16:09  JasonJi  阅读(868)  评论(0编辑  收藏  举报