• RESTful API入门


     

    RESTful是一种设计风格,并不是一种标准。

    简短的去概括的话,就是:
    1、URL 定位资源

    资源,就是数据。比如newsfeed,friends,order等

    2、用 HTTP 动词描述操作。

    GET、PUT、POST、DELETE

    我为什么要用TA

    1、以前的开发方式都是前后端混在一起开发,比如php里面写html啊之类的。那么移动开发再加上web,我们岂不是要维护三个地方。
    2、随着版本迭代,项目越来越大,如果api杂乱无章,那么维护起来更是无法控制。
    3、所以,我们就要有所约束,而RESTful就是利用HTTP本身的一些特征来制定的风格。


    如何设计RESTful?

    • REST ful 是面向资源的,而资源是通过 URI 进行暴露。

      (一)、URI 的设计只要负责把资源通过合理方式暴露出来就可以了
      (二)、对资源的操作与它无关,操作是通过 HTTP 动词来体现。
      (三)、所以 REST ful 通过 URI 暴露资源时,会强调不要在 URI 中出现动词。
      (四)、推荐用复数。

    不太理解吗?来看个栗子:

    比如:左边是错误的设计,而右边是正确的

    GET /rest/api/getDogs | GET /rest/api/dogs 获取所有狗 
    POST /rest/api/addDogs | POST /rest/api/dogs 添加一个狗    
    PUT /rest/api/editDogs/:dog_id | PUT /rest/api/dogs/:dog_id 修改一只狗 
    DELETE /rest/api/deleteDogs/:dog_id | DELETE /rest/api/dogs/:dog_id 删除一只狗
    左边的这种设计,很明显不符合REST风格。

    上面已经说了,URI 只负责准确无误的暴露资源,而 getDogs/addDogs... 已经包含了对资源的操作,这是不对的。
    相反右边却满足了,它的操作是使用标准的HTTP动词来体现。

    • REST ful 很好地利用了HTTP本身就有的一些特征,如HTTP动词、HTTP状态码、HTTP报头等等

      (一)、REST ful 是基于 HTTP 的,所以你的API应该去使用 HTTP的一些标准。这样所有的HTTP客户端(如浏览器)才能够直接理解你的API。
      (二)、REST ful 强调利用好 HTTP 本来就有的特征。

    不太理解吗?一个一个解释:
    一、HTTP 动词
    GET      获取一个资源 
    POST     添加一个资源 
    PUT      修改一个资源 
    DELETE   删除一个资源

    实际上,这四个动词实际上就对应着增删改查四个操作,这就利用了HTTP 动词来表示对资源的操作。

    二、HTTP状态码

    在与 API 的交互当中,无非就三种状态:

    200   OK                       成功
    400   Bad Request              客户端错误
    500   Internal Server Error    服务器端错误
    三、HTTP报头
    Authorization   认证报头 
    Cache-Control   缓存报头 
    Content-Type    消息体类型报头 
    ...

    报头还有很多,不一一列举。
    HTTP报头是描述HTTP请求或响应的 元数据。
    它的作用是客户端 与 服务器端进行相互通信时,告诉对方应该如何处理本次请求。


    一些实例如醍醐灌顶

    GET http://localhost:8080/api/students 可以获得所有的学生信息。
    
    GET http://localhost:8080/api/students/1 可以获得id为“1”的学生信息。
    
    POST 以下JSON内容 
    {"id":0,"firstName":"Edison","lastName":"Di","gender":"M",
    "birthday":538300800000,"uscId":"1234509876","gpa":3.62,
    "mentorId":null,"department":"Computer Science"}
    到 http://localhost:8080/api/student 可以添加一个学生信息。
    
    PUT 以下内容 
    {"gpa":3.62}  
    到 http://localhost:8080/api/students/1 可以修改学生ID为1的学生的GPA.
    
    DELETE http://localhost:8080/api/students/1 可以删除学生ID为1的信息。

     

  • 相关阅读:
    A magic method allowing a third variable used in comparison function of std::sort
    Create a wireframe box in rviz but not using any other extra tools (unfinished)
    Three methods to iterate every point in pointcloud of PCL(三种遍历点云的方式)
    Environment Perception: 3D Truss Environment Mapping and Parametric Expression Extraction
    shell脚本练习02--求字符串的长度
    shell脚本练习01
    shell脚本,循环的记录
    linux 备份最近一天的文件
    mybatis和java一些知识记录
    第8章
  • 原文地址:https://www.cnblogs.com/hgmyz/p/6323050.html
Copyright © 2020-2023  润新知