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

SpringMVC-Rest风格

一、简介

REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格 当我们想表示一个网络资源的时候,可以使用两种方式:

传统风格资源描述形式

  • http://localhost/user/getById?id=1 查询id为1的用户信息
  • http://localhost/user/saveUser 保存用户信息

REST风格描述形式

  • http://localhost/user/1
  • http://localhost/user

所以REST的优点有:

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

常用的请求:GET , POST , PUT , DELETE。

  • 发送GET请求是用来做查询
  • 发送POST请求是用来做新增
  • 发送PUT请求是用来做修改
  • 发送DELETE请求是用来做删除

二、具体代码

原始实现:

//@Controller
//@ResponseBody配置在类上可以简化配置,表示设置当前每个方法的返回值都作为响应体
//@ResponseBody
@RestController //使用@RestController注解替换@Controller与@ResponseBody注解,简化书写
@RequestMapping("/books")
public class BookController {// @RequestMapping( method = RequestMethod.POST)
@PostMapping //使用@PostMapping简化Post请求方法对应的映射配置
public String save(@RequestBody Book book){
System.out.println("book save..." + book);
return "{'module':'book save'}";
}// @RequestMapping(value = "/{id}" ,method = RequestMethod.DELETE)
@DeleteMapping("/{id}") //使用@DeleteMapping简化DELETE请求方法对应的映射配置
public String delete(@PathVariable Integer id){
System.out.println("book delete..." + id);
return "{'module':'book delete'}";
}// @RequestMapping(method = RequestMethod.PUT)
@PutMapping //使用@PutMapping简化Put请求方法对应的映射配置
public String update(@RequestBody Book book){
System.out.println("book update..."+book);
return "{'module':'book update'}";
}// @RequestMapping(value = "/{id}" ,method = RequestMethod.GET)
@GetMapping("/{id}") //使用@GetMapping简化GET请求方法对应的映射配置
public String getById(@PathVariable Integer id){
System.out.println("book getById..."+id);
return "{'module':'book getById'}";
}// @RequestMapping(method = RequestMethod.GET)
@GetMapping //使用@GetMapping简化GET请求方法对应的映射配置
public String getAll(){
System.out.println("book getAll...");
return "{'module':'book getAll'}";
}
}

更新后:

//标准REST风格控制器开发
@RestController
@RequestMapping("/books")
public class BookController2 {@PostMapping //添加public String save(@RequestBody Book book){System.out.println("book save..." + book);return "{'module':'book save'}";}@DeleteMapping("/{id}")public String delete(@PathVariable Integer id){System.out.println("book delete..." + id);return "{'module':'book delete'}";}@PutMapping //修改public String update(@RequestBody Book book){System.out.println("book update..."+book);return "{'module':'book update'}";}@GetMapping("/{id}") //get是查询public String getById(@PathVariable Integer id){System.out.println("book getById..."+id);return "{'module':'book getById'}";}@GetMappingpublic String getAll(){System.out.println("book getAll...");return "{'module':'book getAll'}";}
}

注意:要在SpringConfig配置类中加上 @EnableWebMvc  注解,目前用来解析json格式,此注解功能很多


@Configuration
@ComponentScan("com.itheima.controller")
@EnableWebMvc  
public class SpringMvcConfig {
}

http://www.lryc.cn/news/178301.html

相关文章:

  • WebGL实现透明物体(α混合)
  • RecycleView刷新功能
  • 目标检测如何演变:从区域提议和 Haar 级联到零样本技术
  • 聊一聊国内大模型公司,大模型面试心得、经验、感受
  • 【分布式微服务】feign 异步调用获取不到ServletRequestAttributes
  • c#编程里面最复杂的技术问题有哪些
  • github代码提交过程详细介绍
  • Linux -- 使用多张gpu卡进行深度学习任务(以tensorflow为例)
  • Mendix中的依赖管理:npm和Maven的应用
  • 自定义hooks之useLastState、useSafeState
  • 前端判断: []+[], []+{}, {}+[], {}+{}
  • el-input-number/el-input 实现实时输入数字转换千分位(失焦时展示千分位)
  • 一篇博客学会系列(2)—— C语言中的自定义类型 :结构体、位段、枚举、联合体
  • KongA 任意用户登录漏洞分析
  • 吉力宝:智能科技鞋品牌步力宝引领传统产业创新思维
  • 【IPC 通信】信号处理接口 Signal API(1)
  • 使用GDIView排查GDI对象泄漏导致的程序UI界面绘制异常问题
  • 蓝桥等考Python组别一级001
  • Unity之Hololens2开发 如何接入的MRTK OpenXR Plugin
  • Ubuntu系统Linux内核安装和使用
  • 数学术语之源——群同态的“核(kernel)”
  • defcon-quals 2023 crackme.tscript.dso wp
  • 前端开发 vs. 后端开发:编程之路的选择
  • 算法练习4——删除有序数组中的重复项 II
  • 【C++进阶(六)】STL大法--栈和队列深度剖析优先级队列适配器原理
  • linux opensuse使用mtk烧录工具flashtool
  • Visio如何对文本打下标、上标,以及插入公式编辑器等问题(已解决)
  • 快速将iPhone大量照片快速传输到电脑的办法!
  • TCP/IP协议簇包含的协议
  • 天地图绘制区域图层