当前位置: 首页 > article >正文

RESTful基本要求

文章目录

  • RESTful -Representational State Transfer
    • 1 什么是RESTful
    • 2 RESTful的特征
    • 3 如何设计符合RESTful 特征的API

RESTful -Representational State Transfer

1 什么是RESTful

  • 资源 (Resources)

    网络上的一个实体,或者说是网络上的一个具体信息,并且每个资源都有一个独一无二得URI与之对应;获取资源-直接访问URI即可

  • 表现层(Representation)

    如何去表现资源 - 即资源得表现形式;如HTML , xml , JPG , json等

  • 状态转化(State Transfer)

    访问一个URI即发生了一次 客户端和服务端的交互;此次交互将会涉及到数据和状态得变化

    客户端需要通过某些方式触发具体的变化 - HTTP method 如 GET, POST,PUT,PATCH,DELETE 等

2 RESTful的特征

  • 每一个URI代表一种资源

  • 客户端和服务器端之前传递着资源的某种表现

  • 客户端通过HTTP的几个动作 对 资源进行操作 - 发生‘状态转化’

3 如何设计符合RESTful 特征的API

  • 协议 - http/https

  • 域名

    域名中体现出api字样,如

    https://api.example.com

    or

    https://example.org/api/

  • 版本:

    https://api.example.com/v1/

  • 路径 -

    路径中避免使用动词,资源用名词表示,案例如下

    https://api.example.com/v1/users
    https://api.example.com/v1/animals
    
  • HTTP动词语义

    请求动词说明
    GET(SELECT)从服务器取出资源(一项或多项)
    POST(CREATE)在服务器新建一个资源
    PUT(UPDATE)在服务器更新资源
    DELETE(DELETE)从服务器删除资源

    具体案例如下:

    请求动作请求资源说明
    GET/zoos列出所有动物园
    POST/zoos新建一个动物园
    GET/zoos/ID获取某个指定动物园的信息
    PUT/zoos/ID更新某个指定动物园的信息
    DELETE/zoos/ID删除某个动物园
    GET/zoos/ID/animals列出某个指定动物园的所有动物
    DELETE/zoos/ID/animals/ID删除某个指定动物园的指定动物
  • 巧用查询字符串

    ?type_id=1:指定筛选条件
    ?limit=10:指定返回记录的数量
    ?offset=10:指定返回记录的开始位置。
    ?page=2&per_page=100:指定第几页,以及每页的记录数。
    
  • 状态码

    用HTTP响应码表达 此次请求结果,例如

    响应码说明
    200 OK - [GET]服务器成功返回用户请求的数据
    404 NOT FOUND用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
    500 INTERNAL SERVER ERROR服务器发生错误

http://www.kler.cn/news/290082.html

相关文章:

  • 【MySQL 15】使用 C/C++ 连接数据库
  • 电商行业如何借助BI工具重构“人、货、场”,实现数字化转型?
  • Win32绕过UAC弹窗获取管理员权限
  • 网络安全 加密编码进制
  • 网络安全硬件
  • 区块链Hyperledger Fabric2.2 环境搭建
  • IPSec 参数
  • LeetCode 热题100-64 搜索二维矩阵
  • Spark的Web界面
  • 20240831-PostgreSQL小课持续更新
  • Unity(2022.3.41LTS) - UI详细介绍-Dropdown(下拉列表)
  • 《机器学习》周志华-CH4(决策树)
  • (六)进入MySQL 【MySQL高阶语句】
  • Oracle 和 PostgreSQL 主从对比介绍
  • 基于SpringBoot的校园闲置物品交易管理系统
  • 【linux】Cannot find a valid baseurl for repo: base/7/x86_64、linux常见的命令
  • docker实战基础四(如何在容器中调试和排查运行问题)
  • RFID光触发标签与端口自检功能新型光交箱哑资源管理方案
  • 基于深度学习的植物虫害检测
  • UDP报文结构
  • 【机器学习】集成学习的基本概念、Bagging和Boosting的区别以及集成学习方法在python中的运用(含python代码)
  • Python集成学习和随机森林算法使用详解
  • HarmonyOS开发实战( Beta5版)Stack组件实现滚动吸顶效果实现案例
  • 第86集《大佛顶首楞严经》
  • JVM 锁的种类
  • 一起学习LeetCode热题100道(70/100)
  • 深入了解 Kafka:应用场景、架构和GO代码示例
  • lodash
  • 网络安全服务基础Windows--第9节-DNS部署与安全
  • 《OpenCV计算机视觉》—— 对图片的各种操作