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

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.xdnf.cn/news/62659.html

相关文章:

  • 国产仪器进化论:“鲁般号”基于无人机的天线测试系统
  • 微软Entra新安全功能引发大规模账户锁定事件
  • 【Vue】组件基础
  • Linux系统下docker 安装 redis
  • Mybatis延迟加载、懒加载、二级缓存
  • 统计图表ECharts
  • 2025年世界职业院校技能大赛实施方案(意见稿)
  • 【单片机 C语言】单片机学习过程中常见C库函数(学习笔记)
  • 由Ai生成的Linux 入门到精通学习路径
  • 记录seatunnel排查重复数据的案例分析
  • ESP8266_ESP32 Smartconfig一键配网功能
  • qt 配置 mysql 驱动问题:Cannot load library qsqlmysql;QMYSQL driver not loaded
  • 如何编写单元测试
  • 运维工程师面试总结21/4
  • 前端笔记-Axios
  • 3步拆解Linux内核源码的思维模型
  • 汽车动力转向器落锤冲击试验台
  • Java+nanomsg快速实现去broker的数据通信
  • 2025年最新服务器、中间件安全(面试题)
  • HADOOP 3.4.1安装和搭建(尚硅谷版~)
  • 强化学习系统学习路径与实践方法
  • 随机面试--<二>
  • 1+X: Python程序开发职业技能等级要求(初级)练习资料分享
  • 哈希表的学习
  • 基于RK3588+FPGA+AI YOLO的无人船目标检测系统(一)概述
  • 几何编码:启用矢量模式地理空间机器学习
  • OOA-CNN-LSTM-Attention、CNN-LSTM-Attention、OOA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比
  • 【Redis】SpringDataRedis
  • 【自然语言处理与大模型】模型压缩技术之量化
  • 在线查看【免费】avi,mov,rm,webm,ts,rm,mkv,mpeg,ogg,mpg,rmvb,wmv,3gp,ts,swf文件格式网站