Restful简单理解

Resource Representational State Transfer 直接翻译:表现层状态转移

简单概括:

URL:定位资源

HTTP请求方式:(GET POST DELETE PUT)描述操作

请求状态码:描述结果


看url就知道要什么

看http method就知道干什么

看http status code就知道结果如何


简介版

REST描述的是在网络中client和server的一种交互模式.

在Server提供的RESTful API中,url只使用名词来指定资源

资源是REST架构或者整个网络处理的核心.

通过HTTP请求方式来实现资源的状态扭转.

Server和Client之间传递某资源的一种方式,用JSON或者其他方式

用HTTP Status Code传递Server的状态信息.最常见的200表示成功,500表示Server内部错误

Web端和Server只使用上述定义的API来传递数据和改变数据状态。格式一般是JSON。iOS和Android同理可得。由此可见,Web,iOS,Android和第三方开发者变为平等的角色通过一套API来共同消费Server提供的服务。

Transfer:通俗来讲就是:资源在网络中以某种表现形式进行状态转移。分解开来:

Resource:资源,即数据(前面说过网络的核心)。比如 newsfeed,friends等;

Representational:某种表现形式,比如用JSON,XML,JPEG等;

State Transfer:状态变化。通过HTTP动词实现。

image.jpeg
略详细版

参考

  1. 协议
    API与用户的通信协议,总是使用HTTPs协议

  2. 域名
    应该尽量将API部署在专用域名之下 https://api.example.com
    如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下
    https://example.org/api/

  3. 版本

    应该将API的版本号放入URL
    https://api.example.com/v1/
    另一种做法是:将版本号放在HTTP头信息中,

  4. 路径
    https://api.example.com/v1/zoos
    https://api.example.com/v1/animals
    https://api.example.com/v1/employees

  5. 动词
    对于资源的具体操作类型,由HTTP动词表示
    GET(SELECT):从服务器取出资源(一项或多项)。
    POST(CREATE):在服务器新建一个资源。
    PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
    PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
    DELETE(DELETE):从服务器删除资源。
    还有两个不常用的HTTP动词
    GET /zoos:列出所有动物园
    POST /zoos:新建一个动物园
    GET /zoos/ID:获取某个指定动物园的信息
    PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
    PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
    DELETE /zoos/ID:删除某个动物园
    GET /zoos/ID/animals:列出某个指定动物园的所有动物
    DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物

  6. 过滤信息(Filtering)
    如果记录数量很多,服务器不可能都将它们返回给用户,API应该提供参数,过滤返回结果
    ?limit=10:指定返回记录的数量
    ?offset=10:指定返回记录的开始位置。
    ?page=2&per_page=100:指定第几页,以及每页的记录数。
    ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
    ?animal_type_id=1:指定筛选条件

  7. 状态码(Status Code)

      200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
      201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
      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 - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。     

你可能感兴趣的:(Restful简单理解)