欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

RestFull风格及响应状态码

程序员文章站 2022-03-22 10:08:39
RestFull风格概念RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。其实就是一种非常优雅的规范.简单理解,使用名词而非使用动词,并根据请求的方式不同来得到响应的响应.例如 分别实现用户的CRUD操作查询: http://unrestful.com/queryUser?id=1 VS G...

RestFull风格

  1. 概念

    1. RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
    2. 其实就是一种非常优雅的规范.简单理解,使用名词而非使用动词,并根据请求的方式不同来得到响应的响应.
      1. 例如 分别实现用户的CRUD操作
        1. 查询: http://unrestful.com/queryUser?id=1 VS GET方式 http://restful.com/user/1

        2. 新增 : http://unrestful.com/saveUser VS POST方式 http://restful.com/user

        3. 删除 : http://unrestful.com/deleteUser?id=2 VS DELETE方式 http://restful.com/user/2

        4. 修改 : http://unrestful.com/updateUser?id=3 VS PUT方式 http://restful.com/user/3

  2. 大家都遵循的基本原则

    1. 请求方式和处理资源的方式匹配
      GET (选择):从服务器上获取一个具体的资源或者一个资源列表。
      POST (创建): 在服务器上创建一个新的资源。
      PUT(更新):以整体的方式更新服务器上的一个资源。
      PATCH (更新):只更新服务器上一个资源的一个属性。
      DELETE(删除):删除服务器上的一个资源。
    2. 使用复数名词
      /categorys 而不是 /category
      /users 而不是 /user
      /products 而不是 /product
      
    3. 为集合提供过滤 排序 选择和分页等功能
      1. 比如在数据过多, 需要对数据进行分页请求的时候, 我们应该统一 API 请求参数. 常见的有这些.
        1. limit=10 指定返回记录的数量
        2. offset=10 指定返回记录的开始位置。
        3. page=2&per_page=100 指定第几页,以及每页的记录数。
        4. sortby=dept&order=desc 指定返回结果按照哪个属性排序,以及排序顺序。
      2. 过滤 :使用唯一的查询参数进行过滤:
        1. GET /rooms?room_num=666 返回指定的room
      3. Sorting排序: 允许针对多个字段排序
      4. Field selection
        1. 移动端能够显示其中一些字段,它们其实不需要一个资源的所有字段,给API消费者一个选择字段的能力,这会降低网络流量,提高API可用性。

          GET /cars?fields=manufacturer,model,id,color

    4. json数据类型(json字符串和对象之间的转换请查看另一篇博文–JsonUtils工具转换
      1. Number:整数或浮点数
      2. String:字符串(使用较多)
      3. Boolean:true 或 false
      4. Array:数组包含在方括号[]中
      5. Object:对象包含在大括号{}中
      6. Null:空类型
    5. Http状态码处理错误
      RestFull风格及响应状态码

本文地址:https://blog.csdn.net/zwq56693/article/details/107380822

相关标签: JavaWeb java