SSM框架从入门到入土(RESTful风格)

目录

REST简介

对比:

传统风格资源描述形式

REST风格描述形式

RESTful入门案例:

1.设定http请求动作(动词)

2.设定请求参数(路径变量)

入门案例优化:


REST简介

REST(Representational State Transfer),表现形式状态转换

对比:

传统风格资源描述形式

http://localhost/user/getById?id=1

http://localhost/user/saveUser

REST风格描述形式

http://localhost/user/1

http://localhost/user

优点:隐藏资源的访问行为,无法通过地址得知对资源是何种操作,书写简化

注意事项
++上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users、books、account..++

RESTful入门案例:

1.设定http请求动作(动词)

@RequestMapping(value = "/users",method = RequestMethod.POST),根据你的行为来选定对应的动作,PSOT,GET...........

2.设定请求参数(路径变量)

@RequestMapping(value = "/users/{id}" ,method = RequestMethod.DELETE)

@ResponseBody

public String delete(@PathVariable Integerid){System.out.println("user delete..." + id);return "{'module':'user delete'}";

++在路径上面要有参数的占位,在形参上加上@PathVariable把名称和数据对应上。++

名称:@PathVariable

类型:形参注解

位置:SpringMVC控制器方法形参定义前面

作用:绑定路径参数与处理器方法形参间的关系,要求路径参

入门案例优化:

在我们实际书写中,这样的格式显然有些复杂,因此后续做了一些优化。我们用

@RestController代替@Controller+@RequestBody,

用@PostMapping代替@RequestMapping(method = RequestMethod.POST)

总结:

这种设计使得 API 变得自描述 且统一。标准映射规则如下:

HTTP 方法 资源路径 (URL) 功能描述 常用HTTP状态码
GET /users 查询所有用户 200 (OK)
GET /users/{id} 查询单个用户 200 (OK) / 404 (Not Found)
POST /users 新增用户 201 (Created)
PUT /users/{id} 全量更新用户 200 (OK) / 204 (No Content)
DELETE /users/{id} 删除用户 204 (No Content) / 200 (OK)

Spring MVC 通过一组专门设计的注解,完美支撑了上述映射规则。

1. @RestController:一键开启 REST 模式

这是构建 RESTful API 的基石。它继承了 @Controller 和 @ResponseBody,强制控制器中所有方法返回的对象直接序列化为 JSON/XML 写入 HTTP 响应体,而不是解析为视图页面 。

2. 请求映射注解:精准匹配 HTTP 方法

不要再使用通用的 @RequestMapping。强烈建议使用其简化版本,使代码意图一目了然 :

  • @GetMapping

  • @PostMapping

  • @PutMapping

  • @DeleteMapping

3. 参数绑定注解:从请求中提取数据

RESTful 风格要求参数通过特定位置传递,Spring MVC 提供了精准的提取工具 :

  • @PathVariable :RESTful 的核心注解 。用于绑定 URL 路径中的模板变量(如 /{id}),这是与传统 ?param=value 风格最大的区别。

  • @RequestBody:绑定 HTTP 请求体中的 JSON/XML 数据到 Java 对象(常用于 POST/PUT)。

  • @RequestParam:绑定查询参数(较少用于 RESTful 资源定位,多用于筛选、分页等场景)。

相关推荐
卷无止境8 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
狼爷8 小时前
从零用 Java 构建 AI Agent 框架:JavaManus 设计与实现深度解析
后端·langchain·aigc
郑州光合科技余经理8 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
专业程序开发源9 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
专业程序开发源9 小时前
springboot社区养老系统44071-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
小呆呆6669 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
周杰伦fans9 小时前
8GB显存下模型量化实战指南
人工智能·后端·c#
小蒜学长10 小时前
基于SpringBoot的佳新超市管理系统设计与实现系统(代码+数据库+LW)
java·数据库·spring boot·后端·佳新超市管理系统
IT_陈寒11 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
打工仔折腾 AI11 小时前
把AI Agent托管在家用电脑:UU远程终端与端口映射实测记录
人工智能·后端·python·langchain·ai agent 实战