1.REST风格是什么?

Restful是一种软件架构风格设计风格,通过url路径的方式和请求方式的配合进行参数传递以及完成不同的CRUD操作,使不同的请求方式和不同的操作进行了一个匹配统一。

2.REST请求方法设定

Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP 协议里面四个表示操作方式的动词如下:

请求方式 请求目的
GET 用于获取资源
POST 用于新建资源
PUT 用于更新资源
DELETE 用于删除资源
例如:* /users/1 GET : 得到 id = 1 的 user* /users/1 DELETE: 删除 id = 1 的 user* /users/1 PUT: 更新 id = 1 的 user* /users POST: 新增 user

3.REST入门案例

(1)没有参数传递时
不使用Restful风格编写的controller

@RequestMapping("/save")@ResponseBodypublic String save1(){System.out.println("save running......");return "save";}

使用Restful风格编写的controller
这里直接指出了只有post的请求时才是执行保存用户的操作

@RequestMapping(value = "/users", method = RequestMethod.POST)@ResponseBodypublic String save2(){System.out.println("save running......");return "save";}

(2)有普通参数传递时
不使用Restful风格编写的controller

@RequestMapping(value = "/findById")@ResponseBodypublic String findById(Integer id){System.out.println("findById running......" + id);return "findById";}

注意此时在浏览器地址栏我们需要输入的内容是
http://localhost:8080/test/findById?id=1

使用Restful风格编写的controller
这里直接指出了只有get的请求时才是执行查找用户的操作

@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)@ResponseBodypublic String findById(@PathVariable Integer id){System.out.println("findById running......" + id);return "findById";}

注意此时在浏览器地址栏我们需要输入的内容是
http://localhost:8080/test/findById/1

(3)有json格式的字符串参数传递需要封装对象时
这里我用了一个表单提交post的请求且不使用REST时

@RequestMapping(value = "/users")@ResponseBodypublic String save(User user) throws JsonProcessingException {System.out.println(user);ObjectMapper mapper = new ObjectMapper();return mapper.writeValueAsString(user);}

这里我采用的是ajax异步请求传递一个json格式的字符串,并采用POST的提交方式。
ajax的异步请求代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head><title>Title</title><script src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script><script>// 定义方法var user = {username:"zs", age:12};function fun(){$.ajax({url:"users",contentType:"application/json",type:"POST",data:JSON.stringify(user),success:function (data) {alert(data);},// 相应成功后的回调函数error:function () {alert("出错了。。。");},dataType:"text"})}</script>
</head>
<body><input type="button" οnclick="fun()" value="提交">
</body>
</html>

对应的controller如下:

@RequestMapping(value = "/users", method = RequestMethod.POST)@ResponseBodypublic String save(@RequestBody User user) throws JsonProcessingException {System.out.println(user);ObjectMapper mapper = new ObjectMapper();return mapper.writeValueAsString(user);}

4.Restful开发中的注解介绍

  • 名称:@PathVariable
  • 类型:形参注解
  • 位置:SpringMVC控制器方法形参定义前面
  • 作用:绑定路径参数与处理器方法形参间的关系,要求路径名与形参名一一对应
  • 范例:
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)@ResponseBodypublic String findById(@PathVariable Integer id){System.out.println("findById running......" + id);return "findById";}
  • 名称:@RestController
  • 类型:类注解
  • 位置:基于SpringMVCESTful来发控制器类定义上方
  • 作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解的组合功能。
  • 范例:
@RestController
public class UserController{}
  • 名称:@GetMapping @PostMapping @PutMapping @DeleteMapping
  • 类型:方法注解
  • 位置:基于SpringMVCESTful来发控制器方法定义上方
  • 作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求
  • 属性:value(默认):请求访问路径
  • 范例:
@RestController
@RequestMapping("/users")
public class UserController {@GetMapping("/{id}")public String findById(@PathVariable Integer id){System.out.println("findById running......" + id);return "findById";}
}

SpringMVC——REST风格相关推荐

  1. OTS构建SpringMVC REST风格的准实时系统

    一.简介 利用OTS为系统提供准实时系统交易流水持久化和离线批量数据存储服务.各系统的支撑系统,所有信息都会调用该服务,访问量大,存储和访问速度要求快,故服务的构建采用REST风格(SpringMVC ...

  2. SpringMVC REST 风格静态资源访问配置

    1 在web.xml中使用默认servlet处理静态资源,缺点是如果静态资源过多,则配置量会比较大,一旦有遗漏,则会造成资源无法正常显示或404错误. <!-- 静态资源访问控制 -->& ...

  3. springMvc ResultFul风格 url拼接问题

    最近在学习SpringMvc 然后遇到一个ResultFul风格的问题 这里跟我的代码习惯有问题,我觉得应该会有人跟我一样.所以就把这个问题发出来 下面是我的目录结构,可以看到我喜欢把jsp放在web ...

  4. springmvc restful风格操作

    ssm框架 controller: package com.sgcc.controller;import java.util.ArrayList; import java.util.List;impo ...

  5. springMVC rest风格

    1.dispatcherServlet的配置 <!-- The front controller of this Spring Web application, responsible for ...

  6. restful get不传参数404_你知道什么是 Restful 风格吗?SpringMVC 带我们实现它!

    Restful 风格的 API 是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓 ...

  7. SpringMVC 表单验证

    SpringMVC 表单验证 本章节内容很丰富,主要有基本的表单操作,数据的格式化,数据的校验,以及提示信息的国际化等实用技能. 首先看效果图 然后项目目录结构图 接下来用代码重点学习SpringMV ...

  8. Spring+SpringMVC+Mybatis SSM框架详解

    一.JDBC编程 1.JDBC 简介 JDBC其实就是 Java 官方提供的一套规范(接口),用于帮助开发人员快速实现不同关系型数据库的连接. 程序运行的时候,数据都是在内存中的.当程序终止的时候,通 ...

  9. Spring ---- ssm整合

    文章目录 SSM(spring+springMVC+Mybatis)整合流程简介 项目基础结构搭建 spring 整合mybatis 创建MyBatis映射文件 创建Spring配置文件.整合Myba ...

最新文章

  1. mysql卸载后root还在_TMD终于把MySQL卸载掉了
  2. leetcode 43. 字符串相乘(Multiply Strings)
  3. 统一配置中心的设计方案
  4. 多层陶瓷电容器用处_陶瓷电容器的用途有哪几种?
  5. Batch Normalization批量归一化
  6. SSH中直接运行php文件
  7. bash学习之环境变量
  8. 基于协同过滤,NMF和Baseline的推荐算法
  9. windows自带录屏_电脑版免费的录屏软件有哪些?
  10. 3150cdn打印机清零 hl_兄弟HL-3150/3140彩色打印机粉盒清零方法,我们提前了解一下...
  11. 未能配置 workstation server 的两种错误解决
  12. css设置动画匀速运动,CSS3 transition动画
  13. 倒计时 4天,COSCon'22 会议议程全览 精彩亮点抢鲜看!
  14. 全球计算机病毒损失报告,世界十大计算机病毒 CIH的危险被公认,第二经济损失26亿美元...
  15. 基于51单片机的体脂检测系统设计(51+oled+hx711+us100)
  16. 单片机外部中断触发方式:电平触发和边沿触发两者说明
  17. 基于脱敏数据,使用huggingface的Transformers预训练模型
  18. 2021旗舰机选购指南
  19. LTspice使用教程笔记
  20. 如何让女性乳房更具吸引力?整形医生可以用眼动追踪技术大显神通吗?

热门文章

  1. gene prediction commend 2
  2. 公众平台返回原始数据为: 错误代码-40164,错误信息-invalid ip, not in whitelist hint
  3. C语言strcmp函数的笔记
  4. 解决软件或游戏缺少api-ms-win-core-fibers-l1-1-1.dll无法启动问题
  5. Java小程序后台管理系统
  6. python 读取excel太慢_使用xlrd读取django批量excel文件太慢
  7. MC20 AT指令无反馈
  8. 解决QMYSQL driver not loaded问题
  9. 提升宝宝智力的方法和惩罚宝宝的科学方法
  10. python3 opencv3.4.5.20(高版本可行) 实现 matlab 去除小面积对象 bwareaopen函数