RESTful学习笔记(一)

Web发展

一、API

程序硬件接口(Application Programming Interface),是预先定义好的逻辑函数,软件系统不同组成部分衔接的约定,直接调用函数,无序访问代码细节,分为SDK和Web应用接口两类

SDK:B程序部分功能直接打包给A程序,A程序可直接使用,如java jar包

web应用接口:B程序对外提供访问路径(入口),A程序按照约定好的访问方式访问,如具有http协议请求的访问

例子:快递单号查询(底层发送请求,根据API提供的访问路径)->对应到从入库到签收的流水记录信息(response一般是Json信息)

二、Web发展阶段

静态内容:html静态文档组成,用于研究

CGI阶段:增加了编程API,提供动态变化内容

脚本语言阶段:网站内容的兴起,把相关的图片文件按照一些规则组合在一起,如PHP等服务器端

瘦客户端阶段:MVC,前后端分离,前端只做展示,后端做数据处理

富客户端阶段:外表美观JS技术,不仅仅是简单的页面拼接,如古早的easyUI,extjsUI等后端管理,以及现在的bootstrapUI、layUI、elementUI等优雅的后端管理界面风格UI

移动Web应用阶段(现在):因为现在手机不离手,所以出现大量面向移动设备(手机、平板)的应用开发技术,如基于HTML5的开发技术

三、开发模式发展

传统开发模式:一个服务器,前后端严重耦合,后端人还得学JS和html,一旦后端换语言,前端也要重新开发

前后端分离模式(现在):两个服务器(前端服务器【纯静态资源】,接口服务器【接收、处理、响应请求,全是数据操作,没有涉及页面】);浏览器发静态页面请求给前端服务器,前端ajax异步列表请求到接口服务器,接口服务器响应JSON格式数组数据给前端服务器,前端服务器将要响应回的单纯的页面(list.html),将数据通过JS/vue/jquery语言渲染到前端页面,进行页面数据组合。前端不管是什么形式,不管是小程序还是APP,只要能正确发送请求到接口,就都能取到对应数据

RESTful风格接口设计

存在原因:人们越来越依赖手机,客户端可能是APP或者小程序,服务器端要提供一套统一的API接口,使得不管是APP还是小程序形式的客户端都能基于相同的规则和协议就能调用API接口获得预期数据

如同样的路径(添加员工):最后的子路径A员工设定的是add,B员工设定的是xinzeng(英文不好)

优雅统一API方法:遵循rest规范,因为比较简单易读,满足rest约束条件和原则的应用程序设计就是RESTful应用

一、约束规范

传统模式

@Controller:容器管理

@RequestMapping(不管什么样的请求方式都能请求)后面跟上要访问的路径(见名知意)

rest风格

1、路径:由当前接口操作资源(rstful眼中一切都是资源,每个资源有唯一的定位符URI【图片、网页、路径都是资源,对应URI就是请求的路径】);资源不只有一个(如员工有很多个员工,,所以资源的名称采用复数如employees),@RequestMapping("/employees"),具体是哪个员工由传入的参数决定

2、请求方式(不同请求方式对应不同的操作请求):

GET---查询(从服务器取资源);POST---在服务器新建一个资源;PUT---更新资源(更新整个对象);PATCH---更新资源(更新个别属性);DELETE---删除资源

传统路径见名知意=restful路径+请求方式(POST对应add添加)

例:GET/zoos:列出所有动物园;GET/zoos/{id}:列出指定动物园信息;

3、请求参数---由需求决定

4、请求响应(数据返回的格式)---一般是json格式

二、拓展

HTTP响应码

200---响应成功;400---请求参数出错;401/403---用户不能访问(401是没权限,403是有权限但被禁止);404---请求针对的是不存在的记录;500---服务器发生错误,用户无法判断请求是否成功

资源表现形式

accept:客户端期望返回的数据类型(对服务器端返回的数据类型作限制)

content-type:说明带过去和响应回来的数据都是什么格式

 

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

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

相关文章

SD2351核心板:重构AI视觉产业价值链的“超级节点”

在AI视觉技术狂飙突进的当下,一个吊诡的现象正在浮现:一方面,学术界不断刷新着ImageNet等基准测试的精度纪录;另一方面,产业界却深陷“算法有、场景无,技术强、落地难”的怪圈。明远智睿SD2351核心板的问世…

【数据结构】红黑树原理及实现

目录 一. 红黑树的概念1. 红黑树的规则思考 2. 红黑树的效率 二.红黑树的实现1. 红黑树的结构2. 红黑树的插入3. 红黑树的平衡调整情况1:变色情况2:单旋变色情况3:双旋变色 4. 红黑树插入及平衡调整代码实现5.红黑树的验证 一. 红黑树的概念 …

时间复杂度分析

复杂度分析的必要性: 当给我们一段代码时,我们是以什么准则来判断代码效率的高低呢?每一段代码都会消耗一段时间,或占据一段数据空间,那么自然是在实现相同功能的情况下,代码所耗时间最少,所占…

L1-1、Prompt 是什么?为什么它能“控制 AI”?

*Prompt 入门 L1-1 想象一下,你只需输入一句话,AI 就能自动为你写一篇文案、生成一份报告、甚至规划你的创业计划。这种“对话即编程”的背后魔法,就是 Prompt 的力量。 🔍 一、Prompt 的定义与由来 Prompt(提示词&am…

微信小程序文章管理系统开发实现

概述 在内容为王的互联网时代,高效的文章管理系统成为各类平台的刚需。幽络源平台今日分享一款基于SSM框架开发的微信小程序文章管理系统完整解决方案,该系统实现了多角色内容管理、智能分类、互动交流等功能。 主要内容 一、用户端功能模块 ​​多角…

【Python-Day 5】Python 格式化输出实战:%、format()、f-string 对比与最佳实践

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

R7周:糖尿病预测模型优化探索

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、数据预处理 1.设置GPU import torch.nn.functional as F import torch.nn as nn import torch, torchvisiondevice torch.device("cuda"…

使用Tortoise-ORM和FastAPI构建评论系统

title: 使用Tortoise-ORM和FastAPI构建评论系统 date: 2025/04/25 21:37:36 updated: 2025/04/25 21:37:36 author: cmdragon excerpt: 在models.py中定义了Comment模型,包含id、content、created_at、updated_at字段,并与User和Article模型建立外键关系。schemas.py中定义了…

【VS Code】如何使用SSH打开远程服务器Docker上的项目或文件夹

要在VS Code中使用SSH打开远程服务器Docker上的项目或文件夹,您需要结合使用VS Code的Remote - SSH扩展和Docker的远程访问功能。以下是详细步骤: 安装VS Code Remote - SSH扩展 打开VS Code。点击左侧活动栏的扩展图标(或使用快捷键CtrlShif…

NHANES指标推荐:PLP

文章题目:Association of pyridoxal 5-phosphate (PLP) with lipid profiles: a population-based cohort study DOI:10.3389/fnut.2025.1545301 中文标题:5-磷酸吡哆醛 (PLP) 与血脂谱的关系:一项基于人群的队列研究 发表杂志&am…

MySQL 详解之备份与恢复策略:数据安全的最后一道防线

在任何信息系统中,数据都是最宝贵的资产。数据的丢失可能源于多种原因:硬件故障、人为误操作、软件 Bug、恶意攻击,甚至自然灾害。一旦发生数据丢失,如果没有有效的备份和恢复机制,后果可能是灾难性的,可能导致业务中断、经济损失甚至法律责任。 数据库备份与恢复,正是…

2026《数据结构》考研复习笔记五(栈、队列)

栈、队列 一、栈1.卡特兰数2.不合法的出栈序列 二、队列1.循环队列2.输入输出受限队列(四个数1234) 三、算法1.栈在括号匹配中的应用2.中缀表达式求值(通过转化为后缀表达式再后缀表达式求值)3.中缀表达式转化为后缀表达式4.后缀表…

深入解析微软MarkitDown:原理、应用与二次开发指南

一、项目背景与技术定位 微软开源的MarkitDown并非简单的又一个Markdown解析器,而是针对现代文档处理需求设计的工具链核心组件。该项目诞生于微软内部大规模文档系统的开发实践,旨在解决以下技术痛点: 大规模文档处理性能:能够高…

pyinstaller打包paddleocr发生错误解决

python环境是3.9,github paddleocr v2.10.0。 一个非常简单的案例如下,打包时发生错误。 import requests from paddleocr import PaddleOCR if __name__ "__main__":paddleocr_ocr PaddleOCR(use_angle_clsTrue, langch,det_model_dirmode…

算法之回溯法

回溯法 回溯法定义与概念核心思想回溯法的一般框架伪代码表示C语言实现框架 回溯法的优化技巧剪枝策略实现剪枝的C语言示例记忆化搜索 案例分析N皇后问题子集和问题全排列问题寻路问题 回溯法的可视化理解决策树状态空间树回溯过程 回溯法与其他算法的比较回溯法与动态规划的区…

命令行指引的尝试

效果 步骤 首先初始化一个空的项目,然后安装一些依赖 npm init -y npm install inquirer execa chalk ora至于这些依赖是干嘛的,如下图所示: 然后再 package.json 中补充一个 bin 然后再根目录下新建一个 index.js , 其中的内容如下 #!/…

探秘LLM推理模型:hidden states中藏着的self verification的“钥匙”

推理模型在数学和逻辑推理等任务中表现出色,但常出现过度推理的情况。本文研究发现,推理模型的隐藏状态编码了答案正确性信息,利用这一信息可提升推理效率。想知道具体如何实现吗?快来一起来了解吧! 论文标题 Reasoni…

流量抓取工具(wireshark)

协议 TCP/IP协议簇 网络接口层(没有特定的协议)PPPOE 物理层数据链路层 网络层: IP(v4/v6) ARP(地址解析协议) RARP ICMP(Internet控制报文协议) IGMP传输层:TCP(传输控制协议)UDP(用户数据报协议)应用层…

.NET仓储层在 using 块中创建 SqlSugarClient 的风险

如题&#xff0c;先看代码示例 using 块的使用 public ISugarQueryable<T> GetSet(Expression<Func<T, bool>> whereExpression null) {using (SqlSugarClient dbClient SqlSugarInstance.GetInstance()){var query dbClient.Queryable<T>();if (w…

C语言----函数栈帧讲解

目录 1.函数栈帧是什么? 2. 理解函数栈帧能解决什么问题 3、函数栈帧的创建和销毁具体过程 3.1 什么是栈 3.2 认识相关寄存器和汇编指令 3.3函数栈帧的创建和销毁 3.3.1 预备知识 3.3.2 函数的调用堆栈 3.3.3 准备环境 3.3.4 转到反汇编 3.3.5 函数栈帧的创建 3.3…