① RESTful API

news2024/11/13 9:09:47

1.API(Application Programming Interface)

        API就是一个接口;例如玩某一款游戏,你不必知道游戏具体的实现细节,只需要知道点哪个键是哪个技能就够了,而这个键之所以能实现玩家与游戏的交互,是因为开发者提供了这样的接口-API

https://youtu.be/zvKadd9Cflcicon-default.png?t=N5K3https://youtu.be/zvKadd9Cflc

        现实世界中API的应用也越来越多,带来大量便利的同时,传统API不够统一规范也成了问题,于是一种结构清晰、统一规范、易于理解、便于扩展的接口风格-RESTful API应运而生

2. REST(Representational State Transfer)

        REST是一种软件架构风格,它定义了一组原则和约束条件,用于设计网络应用程序的分布式系统

        RESTful 是基于 REST 架构风格设计和实现的 Web 服务或 API

        通过遵循RESTful设计原则,可以实现松耦合、可扩展和易于维护的分布式系统和Web服务

3.RESTful API

        RESTful API(Representational State Transfer API)是一种设计和实现符合 REST 架构风格的 Web 服务接口。它基于 HTTP 协议,使用 HTTP 方法(GET、POST、PUT、DELETE)对资源进行操作,并通过 URI(统一资源标识符)来定位和标识资源。

  • GET:从Server取得资源或是状态。
  • POST:将资源发布到Server,例如新增一笔资料。
  • PUT:在Server上新增或修改指定资源。
  • PATCH:更新Server上现有资源的一部分。
  • DELETE:删除Server的资源。

3.1 API端点(API Endpoints) 

        

3.2 RESTful API的设计原则

3.2.1 统一接口(Uniform Interface)

        RESTful API具有统一的接口,使用HTTP方法(如GET、POST、PUT、DELETE)和明确定义的请求和响应数据结构的组合来操作资源。通过统一接口,让使用者了解API需要哪些资料,以及返回那些资料,客户端和服务器可以相互通信

3.2.2 无状态(Stateless)

        服务器和客户端之间的通信是无状态的,即服务器不会在请求之间保留任何连接状态或上下文信息。每个请求都是独立的,服务器不会依赖先前的请求。

3.2.3 可缓存性*(Cacheability)

        RESTful API可以通过缓存来提高服务器的响应时间。服务器可以在响应中设置适当的缓存标头,以指示客户端对响应进行缓存,从而减少对服务器的后续请求。

3.2.4 客户端-服务器分离*(Client-Server Separation)

        客户端和服务器之间的关注点分离。服务器负责提供资源和业务逻辑,客户端负责处理用户界面和用户交互。这样可以实现系统的分层和松耦合。

3.2.5 分层系统*(Layered System)

        服务器可以将请求转发到其他API,客户端可以连接到其他经过授权的API,同时仍然接收来自服务器的响应。这种分层的结构提供了可扩展性和灵活性。

3.2.6 按需编码*(Code on Demand)

        服务器可以将可执行代码传输到客户端,以临时扩展或自定义客户端功能。这使得客户端可以动态地获取特定的代码段,以满足其特定需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在个人电脑上部署ChatGLM2-6B中文对话大模型

简介 ChatGLM2-6B 是清华大学开源的一款支持中英双语的对话语言模型。经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,具有62 亿参数的 ChatGLM2-6B 已经能生成相当符合人类偏好的回答。结合模型量化技术,用户可以在消费级的显卡上进行本地部署&…

亚马逊点击广告有什么好处?

亚马逊点击广告可以带来以下几个好处: 1、增加曝光和可见性:亚马逊点击广告可以将你的产品展示给更多潜在的购买者。通过有针对性的广告活动,你可以提高产品的曝光度,使更多的人看到你的产品。 2、提高点击率和流量:…

Python 代码打包

这里写目录标题 1. pyc打包及重调用2. Cython打包及重调用 1. pyc打包及重调用 该打包方式仅为入门级,反编译后为源代码,毫无安全性 指令转换 python -m py_compile /path/**.py 代码统一转换 单个py文件打包 import py_compile py_file ["/home/…

基于STM32设计的青少年学习监控系统(华为云IOT)

一、设计需求 1.1 项目背景 近几年,我国儿童青少年的近视发生率越来越高,生活中总会看到许多小小年纪就戴着眼镜的小朋友。家长对孩子的用眼时间没有约束,电子产品对孩子眼睛的影响,写字姿势,有的孩子写字时握笔太低,以致整个人趴在桌子上等都是造成孩子近视的重要因素…

c++ freetype 解析可变字体(Variable font)

什么是可变字体 上一篇文章说了 传送门也懒的贴了, 自己去翻吧 前言 我这里不会贴完整的代码 也不会说的那么细,主要提供一些关键点和方法 正文 ‘name’ 表table 解析 TrueType 字体的解析 字体里面有很多的表table 我们需要的family和style 都在这…

C++在线五子棋对战(网页版)项目:websocket协议

目标:认识理解websocket协议、websocket切换过程和websocket协议格式。认识和学会使用websocketpp库常用接口。了解websocketpp库搭建服务器流程,认识和学会使用websocketpp库bin接口,最后使用websocketpp库搭建服务器。 初识websocket WebS…

OJ# 384 敲七

题目描述 ​ 有 N 个人在玩一种“敲7”游戏,游戏的规则是这样的:第 x 个人从 t 开始报数,然后按顺序报数, 当某人报的数是 7 的倍数或数字中含有 7 时,便被淘汰,剩下的人继续报数,直到只剩下一…

【CesiumJS入门】(6)修改3D Tiles(tileset)的位置及高度

前言 在之前一篇博客中【CesiumJS入门】(4)加载3D Tiles并获取tileset,我们成功得加载了3D Tiles数据集,本篇中,将会向大伙儿介绍tileset位置的修改与恢复: 直接上代码了 /** Date: 2023-06-28 19:35:03*…

操作系统OS(二)进程和线程

进程 所谓进程,简单来说是计算机中的各种任务。 进程是程序的一次执行,是操作系统进行资源分配和调度的基本单位。 进程结构PCB 进程结构: 控制块PCB:进程唯一标识 程序段:同一个应用程序的多个进程 数据段&#xf…

Pytorch中的Exponential Moving Average(EMA)

EMA介绍 EMA,指数移动平均,常用于更新模型参数、梯度等。 EMA的优点是能提升模型的鲁棒性(融合了之前的模型权重信息) 代码示例 下面以yolov7/utils/torch_utils.py代码为例: class ModelEMA:""" …

ELK报错no handler found for uri and method [PUT] 原因

执行后提示no handler found for uri and method post,最新版8.2的问题? 原因: index.mapping.single_type: true在索引上 设置将启用按索引的单一类型行为,该行为将在6.0后强制执行。 原 {type} 要改为 _doc,格式如…

优炫软件自主研发再结硕果,共享存储SRAC集群数据库重磅发布

新一轮科技革命重塑全球经济结构,关键核心技术是产业发展的基石,数据库、芯片、操作系统是我国数字技术领域三大卡脖子难题。数据库向下发挥硬件算力,向上使能应用系统,是各行各业业务系统运行的基础,是软件行业皇冠上…

光口的作用及应用场景

在光通信中,交换机是一个非常重要的设备,它的作用是将来自不同设备的数据包进行收发和交换。之前发布的文章我们有了解到交换机的光口是如何配置的,本期文章我们将详细讨论交换机的光口的作用及应用场景。 一、光口的主要作用 交换机的光口…

适合团队人数少,预算低的四种办公室类型

如果团队人数少且预算低,以下是一些在深圳比较适合租赁的办公室类型: 1. 联合办公空间:联合办公空间是一种灵活的办公模式,通常提供共享的办公环境和设施,如会议室、休息区、打印机等。这种模式的办公室租金通常较低&…

Linux下Master-Master Replication Manager for MySQL 双主故障切换

简述: Master-Master Replication Manager for MySQL(MMRM)是一种用于MySQL数据库的主-主复制管理工具。它允许在多个MySQL主机之间建立双向的主-主复制关系,实现数据的同步和高可用性。 工作原理是通过在每个MySQL主机上配置双…

javascript 剪贴板数据

本篇文章将介绍在 JavaScript 中检测粘贴事件上的剪贴板数据。 JavaScript 剪贴板数据 当用户通过浏览器 UI 启动粘贴操作时,将引发粘贴事件。 当光标位于可编辑上下文中时,默认操作是将剪贴板的内容粘贴到光标位置的文档中。 此事件的处理程序可以通过…

性能优化 :删除项目中没有引用关系的文件 useless-files-webpack-plugin

一般此类包不需要安装到项目中,减少node_modules体积(以项目实际情况决定-S/-D) npm i useless-files-webpack-plugin -S然后再vue.config.js中配置 const UselessFile require(useless-files-webpack-plugin) chainWebpack: config > …

KEIL支持中文编辑

默认只支持英文,中文一粘贴就变成问号。怎么办? 菜单:Edit, Configuration 点击Encoding的下拉按钮,选择GB2312.

关于Http Header必须了解的知识

header是发送请求时携带的头部信息。通常一些鉴权的信息:authentication/cookie、响应的数据格式:content-type等等的设置。当然响应的数据也会返回一些头部信息。 Requests Header,请求头信息  Responses Header&…

自动化测试中如何比较颜色

引言 在做Nightwatch自动化测试中,出现需要比较颜色的时候如何来做? 基本的思路是首先需要取到这个element的颜色值,然后跟预期的颜色进行对比。 比如我要取下面这个会话窗口的颜色,选中这个图标,按F12,查…