zoukankan      html  css  js  c++  java
  • restful接口和普通接口有啥区别_RESTful接口

    1.什么是RESTful

    REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;Rest是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计;它是一种设计风格,不是一种标准,是一种思想.即满足这些约束条件和原则的应用程序或设计就是 RESTful

    2.RESTFUL特点

    1、每一个URI代表1种资源;

    2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;

    3、通过操作资源的表现形式来操作资源;

    4、资源的表现形式是XML或者HTML;

    5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

    3.HTTP动词

    这些动词一般默认为:

    GET 根据用户id查询用户数据

    POST 新增用户

    PUT 修改用户信息

    DELETE 删除用户信息

    285d4f0cd7afdbd7a9fe270160a1e1dc.png

    f20d7f41208dbe9f9e8d3c806beb246a.png

    常用的HTTP动词:

    GET(SELECT):从服务器取出资源(一项或多项)。

    POST(CREATE):在服务器新建一个资源。

    PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)(修改全部数据)

    PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)(修改部分数据)

    DELETE(DELETE):从服务器删除资源。

    不常用的HTTP动词:

    HEAD:获取资源的元数据。

    OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

    例子:

    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:删除某个指定动物园的指定动物

    4.过滤信息

    如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。

    下面是一些常见的参数。

    ?limit=10:指定返回记录的数量

    ?offset=10:指定返回记录的开始位置。

    ?page=2&per_page=100:指定第几页,以及每页的记录数。

    ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。

    ?animal_type_id=1:指定筛选条件

    参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals 与 GET /animals?zoo_id=ID 的含义是相同的。

    5.状态码

    服务器向用户返回的状态码和提示信息,常见的有以下一些:

    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 - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

  • 相关阅读:
    JavaScript进阶系列06,事件委托
    JavaScript进阶系列05,事件的执行时机, 使用addEventListener为元素同时注册多个事件,事件参数
    JavaScript进阶系列04,函数参数个数不确定情况下的解决方案
    JavaScript进阶系列03,通过硬编码、工厂模式、构造函数创建JavaScript对象
    JavaScript进阶系列02,函数作为参数以及在数组中的应用
    JavaScript进阶系列01,函数的声明,函数参数,函数闭包
    委托、Lambda表达式、事件系列07,使用EventHandler委托
    委托、Lambda表达式、事件系列06,使用Action实现观察者模式,体验委托和事件的区别
    委托、Lambda表达式、事件系列05,Action委托与闭包
    委托、Lambda表达式、事件系列04,委托链是怎样形成的, 多播委托, 调用委托链方法,委托链异常处理
  • 原文地址:https://www.cnblogs.com/R-bear/p/15048853.html
Copyright © 2011-2022 走看看