RESTful基本要求

news/2024/9/19 22:46:58/ 标签: 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.ppmy.cn/news/1520488.html

相关文章

《Rust避坑入门记》第2章:解决多线程并发数据竞争的不可变性

从第1章所讨论的出现数据竞争问题的多线程并发剧院订票系统的代码能够看出,虽然可变性能够方便地随时修改值,但滥用可变性,会在多线程并发编程时,带来数据竞争的难题。 共享可变状态所带来的多线程并发时的数据竞争难题&#xff…

windows11交叉编译ffmpeg的android版本库

目录 1、工具准备 (1)MSYS2 (2)NDK(也可直接用android studio安装的) (3)ffmpeg源码 2、环境配置 3、创建编译脚本 4、编译 曾经看到一个博客说,不要用windows编译…

代码随想录算法训练营day58:图论08:拓扑排序精讲;dijkstra(朴素版)精讲

拓扑排序精讲 卡码网:117. 软件构建(opens new window) 题目描述: 某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依…

macos 10.15 Catalina 可用docker最新版本 Docker Desktop 4.15.0 (93002) 下载地址与安装方法

按照docker官方的4.16.0版本发行日志"4.16.0: (2023-01-12 Minimum OS version to install or update Docker Desktop on macOS is now macOS Big Sur (version 11) or later.)" , 这个4.16.0版本就必须要求最低版本os为 11版本, 所以 旧版本的macos 10.15 Catalina …

【图论】Dijkstra算法求最短路

一、Dijkstra算法简介 Dijkstra算法是由河南荷兰计算机科学家狄克斯特拉(Dijkstra)于1959年提出的,因此又叫狄克斯特拉算法。 二、初识Dijkstra算法 在使用Dijkstra算法求最短路时,需要用到三个辅助数组: v i s x vis_x visx​:布尔数组&…

【Python百日进阶-Web开发-音频】Day703 - librosa快速入门

文章目录 一、概述二、快速开始三、高级用法 https://librosa.org/doc/latest/tutorial.html 本节介绍使用librosa进行开发的基础知识,包括包概述、基本和高级用法以及与scikit-learn 包的集成。我们将假设您对 Python 和 NumPy/SciPy 有基本的了解。 一、概述 li…

Python开发学习之Python和Excel的数据实现互通

今天为大家分享一篇使用Python和Excel的数据实现互通的技巧心得,可以让Python和Excel的数据实现互通!具有很好的参考价值,希望对大家有所帮助(建议在电脑端阅读,代码案例较多)。一起过来看看吧!…

重要通知! | Paraverse平行云GitHub搬家啦!

随着“平行云”更名为“Paraverse平行云”,我们的GitHub地址也做出了相应调整。欢迎开发者访问我们的新地址,继续共享我们的开源仓库与实时云渲染软件! 更改的核心内容如下: pingxingyun >> ParaverseTechnology * 文档…

RS232转RS485

1.232转485转换器 232转485转换器是RS-232与RS-485之间的双向接口的转换器,应用于主控机之间,主控机与单片机或外设之间构成点到点,点到多点远程多机通信网络,实现多机应答通信,广泛地应用于工业自动化控制系统&#x…

SpringBoot + Vue实现websocket

后端代码 pom.xml增加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 增加ServerEndpointExporter Bean import org.springframework.context.…

Moveit2 Move Group C++ 接口

系列文章目录 留空 文章目录 系列文章目录前言一、完整代码二、编写步骤三、代码分析1. 引入必要的头文件2. 初始化和配置 ROS2 环境3. 设置 MoveIt 规划组和场景4. 可视化5. 获取基本信息6. 开始演示7. 规划姿态目标8. 可视化计划路径9. 移动到姿势目标10. 规划关节空间目标1…

Linux下TCP编程

一.概念介绍 1.socket 是什么&#xff1f; socket&#xff08;套接字&#xff09;本质上是一个抽象的概念&#xff0c;它是一组用于网络通信的 API&#xff0c;提供了一种统一的接口&#xff0c;使得应用程序可以通过网络进行通信。在不同的操作系统中&#xff0c;socket 的实…

Datawhale X李宏毅苹果书进阶 AI夏今营 task03学习笔记

batch normalization(批次标准化&#xff09; batch normalization--Tarining 直接改error surface的landscape&#xff0c;把山“铲平”有时候尽管error surface是个“碗”&#xff0c;都不见得好train。如下图所示&#xff1a; w1,w2对loss的斜率差别很大&#xff0c;w1方…

Redis基本类型常用命令练习

目录 一、String类型 1. 使用Redis的String命令&#xff0c;如何设置一个键为"username"&#xff0c;值为"Tom"的键值对&#xff1f; 2. 如何使用Redis的String命令获取键为"username"的值&#xff1f; 3. 使用Redis的String命令&#xff0c…

基于Python的机器学习系列(23):奇异值分解(SVD)

在本篇中&#xff0c;我们将介绍如何利用奇异值分解&#xff08;SVD&#xff09;进行降维。SVD 是一种强大的矩阵分解方法&#xff0c;可以帮助我们提取数据中的重要特征&#xff0c;广泛应用于数据分析、图像处理等领域。 问题定义 在数据分析中&#xff0c;特别是当数据维度…

IDEA向mysql写入中文字符时出现乱码问题

可参考该博客&#xff1a;https://www.cnblogs.com/bb1008/p/7704458.html 第一步是将IDEA软件中的编码方式全部改为utf8 File -> Settings -> Editor -> File Encodings 第二步是在数据库链接中加入 ?characterEncodingUTF-8

使用Python写一个适用于Dify和FastGPT的JsonPath插件

编写适用于 Dify 和 FastGPT 的 JsonPath 插件 在本文中&#xff0c;我将分享如何编写一个适用于 AI应用平台的 JsonPath 插件&#xff0c;该插件能够处理 JSON 数据的路径查询、正则表达式提取&#xff0c;以及 JavaScript 沙盒执行功能。这个插件的主要目的是让用户能够通过…

kubeadm方式升级k8s集群

一、注意事项 升级前最好备份所有组件及数据&#xff0c;例如etcd 不要跨两个大版本进行升级&#xff0c;可能会存在版本bug&#xff0c;如&#xff1a; 1.19.4–>1.20.4 可以 1.19.4–>1.21.4 不可以 跨多个版本的可以逐个版本进行升级。 二、查看当前版本 [rootk8s…

8逻辑回归的代价函数

8.1逻辑回归中的代价函数 成本函数 损失函数 8.2逻辑回归的简化版代价函数 代价函数的简化 损失函数的简化 方框内的式子等于上面的

Cadence Virtuoso添加工艺库、转换工艺库格式

系统环境&#xff1a;Red Hat 操作软件&#xff1a;Virtuoso 工艺库&#xff1a;tsmc18rf 1、准备好工艺库文件&#xff0c;放在任意文件夹内&#xff0c;记住文件路径&#xff1a; 2、打开Virtuoso软件&#xff1a; 在桌面右键打开终端&#xff0c;输入&#xff1a; virtuo…