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

传统方式一般是一个请求url对应一种操作,这样做不仅麻烦,也不安全,因为会程序的人读取了你的请求url地址,就大概知道该url实现的是一个什么样的操作。

查看REST风格的描述,你会发现请求地址变的简单了,并且光看请求URL并不是很能猜出来该URL的具体功能

所以REST的优点有:

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

但是我们的问题也随之而来了,一个相同的url地址即可以是新增也可以是修改或者查询,那么到底我们该如何区分该请求到底是什么操作呢?

  • 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作

    • http://localhost/users 查询全部用户信息 GET(查询)
    • http://localhost/users/1 查询指定用户信息 GET(查询)
    • http://localhost/users 添加用户信息 POST(新增/保存)
    • http://localhost/users 修改用户信息 PUT(修改/更新)
    • http://localhost/users/1 删除用户信息 DELETE(删除)

请求的方式比较多,但是比较常用的就4种,分别是GET,POST,PUT,DELETE

按照不同的请求方式代表不同的操作类型。

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

REST中规定GET/POST/PUT/DELETE针对的是查询/新增/修改/删除,但是我们如果非要用GET请求做删除,这点在程序上运行是可以实现的

根据REST风格对资源进行访问称为RESTful。

RESTful快速开发

@PathVariable

名称 @PathVariable
类型 形参注解
位置 SpringMVC控制器方法形参定义前面
作用 绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

关于接收参数,我们学过三个注解@RequestBody@RequestParam@PathVariable,这三个注解之间的区别和应用分别是什么?

  • 区别

    • @RequestParam用于接收url地址传参或表单传参
    • @RequestBody用于接收json数据
    • @PathVariable用于接收路径参数,使用{参数名称}描述路径参数
  • 应用
    • 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
    • 如果发送非json格式数据,选用@RequestParam接收请求参数
    • 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值

@RestController

名称 @RestController
类型 类注解
位置 基于SpringMVC的RESTful开发控制器类定义上方
作用 设置当前控制器类为RESTful风格,
等同于@Controller与@ResponseBody两个注解组合功能

@GetMapping @PostMapping @PutMapping @DeleteMapping

名称 @GetMapping @PostMapping @PutMapping @DeleteMapping
类型 方法注解
位置 基于SpringMVC的RESTful开发控制器方法定义上方
作用 设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,
例如@GetMapping对应GET请求
相关属性 value(默认):请求访问路径

Springboot REST风格相关推荐

  1. SpringBoot RestFul风格API接口开发

    本文介绍在使用springBoot如何进行Restful Api接口的开发及相关注解已经参数传递如何处理. 一.概念: REST全称是Representational State Transfer,中 ...

  2. SpringBoot RESTful 风格 API 多语言国际化i18n解决方案

    文章目录 1 摘要 2 核心代码 2.1 多语言枚举类 2.2 多语言处理工具类 2.3 多语言的API返回状态码枚举类 2.4 多语言 API 接口返回结果封装 2.5 i18n 国际化多语言配置文 ...

  3. SpringBoot——REST风格

    文章目录 一. REST风格 1. REST简介 二. 入门案例 1. 设定http请求动作(动词) 2. 设定请求参数(路径变量) 3. 总结 4. 三种参数的区别 三. RESTful快速开发 一 ...

  4. SpringBoot resultful风格返回格式

    public class Msg<T> {/*错误码*/private Integer code;/*提示信息 */private String msg;/*具体内容*/private T ...

  5. Vue.js + Restful + PageHelper + Thymeleaf + Springboot 前后端分离 增删改查 CRUD 教程

    更多内容,点击了解: https://how2j.cn/k/springboot/springboot-vue/1788.html 目录 步骤 1 : 教程说明 步骤 2 : 数据库准备 步骤 3 : ...

  6. 转换实体类_yue-library 2.3.0发布,替换Db JavaBean转换方案,性能提升约300%+

    yue-library简介 yue-library是一个基于SpringBoot封装的增强库 内置丰富的JDK工具 自动装配了一系列的基础Bean与环境配置项 快速构建SpringCloud项目,让微 ...

  7. SpringCloud 超详细个人笔记

    文章目录 SpringCloud 1.常见面试题 2.微服务概述 2.1.什么是微服务 2.2.微服务和微服务架构 2.3.微服务优缺点 2.4.微服务技术栈有哪些? 2.5.为什么选择SpringC ...

  8. oracle脚本导入mysql数据库_oracle脚本导入mysql数据库

    关于 oracle脚本导入mysql数据库的搜索结果 问题 如何将一个mysql 风格的 sql 脚本转换为 oracle 导入的 sql 脚本 - 数据库报错 如何将一个 mysql 风格的 sql ...

  9. html用bmob做留言,Bmob 之 简单使用

    1. pod pod 'BmobSDK' 与 pod "BmobSDK" 好像没什么区别 2. 导入 在AppDelegate中: #import [Bmob registerWi ...

最新文章

  1. 欧拉角推算旋转矩阵的问题
  2. vue处理json数据的原理_Vue解析json数据的渲染
  3. android 多个textview,Android:多个textview像单个文本
  4. 微信小程序 drawImage 问题
  5. spring aop实例讲解_【好好面试】手把手调试,教你分析Spring-Aop
  6. ERROR: Could not install Gradle distribution from ‘https://services.gradle.org/distributions/gradle
  7. ast java_一种基于AST的Java代码SSA单路径的生成方法技术
  8. 基于html的美食网站——速鲜站餐饮食品(HTML+CSS+JavaScript)大学生网页制作教程 表格布局网页模板 学生HTML静态美食网页设计作业成品 简单网页制作代码 学生美食网页作品
  9. PS滤镜-Topaz Photoshop Plugins Bundle
  10. 基于 NIOSII 软核的流水灯实验
  11. 在VS中一个项目下两个以上源文件怎么通过编译
  12. Element组件--Upload文件/图片上传
  13. 数据连接池contect.xml配置
  14. 企业微信后台应用配置步骤
  15. python爬去虎扑数据信息,完成可视化
  16. Zynq实现分布式Fir滤波器
  17. 常见企业IT支撑【5、内网DNS cache轻量服务dnsmasq】
  18. Xilinx 功耗分析
  19. 蘑菇街java,猎聘邀请蘑菇街觉知分享Java异步化与高性能网络应用
  20. 大数据分析在病毒疫苗研究中的应用

热门文章

  1. 分布式系统治理-边车模式 sidecar
  2. 在线测试MP4视频地址
  3. android终端模拟器 yum,分享|Terminix:一个很赞的基于 GTK3 的平铺式 Linux 终端模拟器...
  4. Flume系列:Flume Sink使用
  5. Runtime 隐藏Status Bar背景
  6. Linux几个版本下创建桌面快捷方式、开始菜单快捷方式、文件管理器右键菜单(只deepin uos 20)
  7. 视屏消音工具,支持指定词语,或者短句消音
  8. 感谢女主播!挺进50亿美元俱乐部之后陌陌路在何方?
  9. 目标检测——R-CNN网络基础
  10. 啊哈添柴挑战Java1012. 打印字符