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:说明带过去和响应回来的数据都是什么格式

相关推荐
虽千万人 吾往矣21 分钟前
golang channel源码
开发语言·后端·golang
_十六33 分钟前
文档即产品!工程师必看的写作密码
前端·后端
radient33 分钟前
线上FullGC问题如何排查 - Java版
后端·架构
6confim38 分钟前
掌握 Cursor:AI 编程助手的高效使用技巧
前端·人工智能·后端
知其然亦知其所以然1 小时前
面试官问我 Java 原子操作,我一句话差点让他闭麦!
java·后端·面试
Lx3521 小时前
📌K8s生产环境排错之:那些暗黑操作
后端·kubernetes
栗筝i1 小时前
Spring Boot 核心模块全解析:12 个模块详解及作用说明
java·spring boot·后端
Cache技术分享1 小时前
55. Java 类和对象 - 了解什么是对象
java·后端
楽码1 小时前
理解go指针和值传递
后端·go·编程语言