① RESTful API

news/2024/7/24 3:52:27 标签: restful, 后端

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.niftyadmin.cn/n/1003902.html

相关文章

超级实用!详解Node.js中的http模块和fs模块

文章目录 1. http 模块创建 HTTP 服务器处理 HTTP 请求发送 HTTP 请求 2. fs 模块读取文件写入文件删除文件创建目录 以下是 Node.js中的http模块和fs模块 1. http 模块 用于创建和处理 HTTP 服务器和客户端,可用于构建 Web 应用程序。 const http require(http)…

Android学习日志 一、滚动视图的嵌套

文章目录 滚动视图的嵌套创建项目(前期准备)工程搭建编写XML正式代码 By-Round Moon 滚动视图的嵌套 说明:本博客是博主学习安卓开发的第一个案例。接下来会进行一系列的样例,含很多基础部分,各位观众老爷请见谅。 Android Studio 版本:2022.2.1 patch …

javascript 触发事件

在 JavaScript 中,原始方法 initEvent() 用于创建新事件。 最新更新添加了用于构建自定义事件的新关键字。 此外,在为 JavaScript 构建的清单中还有大量事件。 以下部分将预览预定义事件之一的示例及其触发方式。 还有一个定制的事件,将细节…

【【51单片机实现LED点阵屏幕和动画显示】】

LED点阵屏幕和驱动代码 我们先搞清楚74HC595的原理 sfr 特殊功能寄存器声明 sbit 特殊位声明 就举个例子,我们在之前的…

LinkedHashMap 学习了解

一、概念 定义&#xff1a; public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> LinkedHashMap 继承 HashMap 的功能&#xff0c;增加保证了元素的有效 /*** The head (eldest) of the doubly linked list.* 双向列表&#xff0c;表…

2023上半年软考系统分析师科目一整理-22

2023上半年软考系统分析师科目一整理-22 2013年专业英语2012年专业英语 2013年专业英语 Feasibility should be measured throughout the life cycle of system development. The scope and complexity of an apparently feasible project can change after the initial probl…

锈湖新作地铁繁花试玩版正式上线啦

地铁繁花是锈湖厂商新作点击式解谜冒险解谜游戏&#xff0c;英文名称为“Underground Blossom”&#xff0c;在游戏中你将深入锈湖的地下&#xff0c;扮演并追溯Laura Vanderboom的人生和记忆吧&#xff01;从一个车站到另一个车站&#xff0c;每个地铁站都象征着劳拉的一段过去…

云原生|kubernetes|离线化部署kubesphere(从网络插件开始记录)

前言&#xff1a; kubesphere的离线化部署指的是通过自己搭建的harbor私有仓库拉取镜像&#xff0c;完全不依赖于外部网络的方式部署。 我的kubernetes集群是一个单master节点&#xff0c;双工作节点&#xff0c;总计三个节点的版本为1.22.16的集群。 该集群只是初始化完成了…