SpringMVC -- REST风格开发,RESTful快速开发、RESTful注解开发


在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaweb

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


REST

  • 一、REST简介
    • 1.1REST风格简介
  • 二、RESTful入门案例
    • 2.1设定http请求动作(动词)
    • 2.2设定请求参数(路径变量)
  • 三、RESTful快速开发
    • 3.1RestController注解
    • 3.2方法注解
  • 总结

一、REST简介

  • REST(Representational State Transfer),表现形式状态转换
    • 传统风格资源描述形式
      • http://localhost/user/getById?id=1
      • http://localhost/user/saveUser
    • REST风格描述形式
      • http://localhost/user/1
      • http://localhost/user
  • 优点:
    • 隐藏资源的访问行为,无法通过地址得知对资源是何种操作
    • 书写简化

1.1REST风格简介

  • 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作
      • http://localhost/users 查询全部用户信息 - - GET(查询)
      • http://localhost/users/1 查询指定用户信息 - - GET(查询)
      • http://localhost/users 添加用户信息 - - POST(新增/保存)
      • http://localhost/users 修改用户信息 - - PUT(修改/更新)
      • http://localhost/users/1删除用户信息 - - DELETE(删除)
  • 上述行为是约定方式,约定不是规范,可以打破,所以称 REST风格,而不是REST规范
  • 描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源。
  • 根据REST风格对资源进行访问叫做RESTful

二、RESTful入门案例

2.1设定http请求动作(动词)

@RequestMapping(value = "/users", method = RequestMethod.GET)@ResponseBodypublic String save() {System.out.println("use save...");return "'module':'user save'";}
//修改@RequestMapping(value = "/users", method = RequestMethod.PUT)@ResponseBodypublic String update(@RequestBody User user) {System.out.println("use update..." + user);return "'module':'user update'";}

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

//带参数@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)@ResponseBodypublic String delete(@PathVariable int id) {System.out.println("use delete..." + id);return "'module':'user delete'";}

  • 名称:@RequestMapping
  • 类型:方法注解
  • 位置:SpringMVC控制器方法定义上方
  • 作用:设置当前控制器方法请求访问路径
  • 范例:
 @RequestMapping(value = "/users", method = RequestMethod.GET)@ResponseBodypublic String save() {System.out.println("use save...");return "'module':'user save'";}
  • 属性:
      • value(默认):请求访问路径
      • method:http请求动作,标准动作(GET/POST/PUT/DELETE)

  • 名称:@PathVariable
  • 类型:形参注解
  • 位置:SpringMVC控制器方法形参前面
  • 作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名相同
  • 范例:
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)@ResponseBodypublic String delete(@PathVariable int id) {System.out.println("use delete..." + id);return "'module':'user delete'";}

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

三、RESTful快速开发

3.1RestController注解

  • 名称:@RestController
  • 类型:类注解
  • 位置:基于SpringMVC的RESTful开发控制器类定义上方
  • 作用:设置当前控制器为RESTful风格,等同于@Controller@ResponseBody两个注解组合功能
  • 范例:
@RestController
@RequestMapping("/address")
public class BookController {
}

3.2方法注解

  • 名称:@GetMapping@PostMapping@DeleteMapping@PutMapping
  • 类型:方法注解
  • 位置:基于SpringMVC的RESTful开发控制器方法定义上方
  • 作用:设置当前控制器方法请求路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求
  • 范例:
@RestController
@RequestMapping("/address")
public class BookController {@GetMappingpublic String save() {System.out.println("use save...");return "'module':'user save'";}@DeleteMappingpublic String delete() {System.out.println("use delete...");return "'module':'user delete'";}//修改@PutMappingpublic String update(@RequestBody Address address) {System.out.println("use update..." + address);return "'module':'user update'";}@GetMapping("{id}")public String getById(@PathVariable int id){System.out.println("address getById..." + id);return "'module':'address getById'";}
}
  • value:默认访问路径

总结

通过这篇文章,基于SpringMVC的RESTful快速开发就介绍到这里了,欢迎各位小伙伴点赞+关注!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/25398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

memcpy、memmove、memcmp、memset函数的作用与区别

一、memcpy与memmove 1、memcpy 作用:从source的位置开始向后复制num个字节的数据到destination的内存位置。 注意: memcpy() 函数在遇到 ’\0’ 的时候不会停下来(strcpy字符串拷贝函数在遇到’\0’的时候会停下来);destination和source…

机器视觉工程师,代码键盘侠们你们真的懂键盘吗?

机器视觉-基本知识-中英通用术语 键盘是用于操作计算机设备运行的一种指令和数据输入装置,也指经过系统安排操作一台机器或设备的一组功能键(如打字机、电脑键盘)。键盘也是组成键盘乐器的一部分,也可以指使用键盘的乐器,如钢琴、数位钢琴或电子琴等,键盘有助于练习打字。…

笛卡尔积文本的python处理

一 背景 大致背景是这样的,笔者在做数据处理时,遇到一个棘手的事情,主要遇到如下字符串拼接变动的场景,场景主要为,需要考虑如下两张表的组合: 表1-原始文本样式 序号文本样式1A变量B2A变量C3A变量CD4E变…

java的String类详解

目录 不可变字符串字符串常量池 String类的继承关系String类的底层实现创建String对象字符串拼接常见面试题 String的常用方法字符串是否相等获取子串返回字符串的长度字符串的比较返回给定值的索引转换大小写返回给定索引的字符字符串替换把字符串转换为字符数组去字符串空白字…

ant.design 组件库中的 Tree 组件实现可搜索的树: React+and+ts

ant.design 组件库中的 Tree 组件实现可搜索的树,在这里我会详细介绍每个方法,以及容易踩坑的点。 效果图: 首先是要导入的文件 // React 自带的属性 import React, { useMemo, useState } from react; // antd 组件库中的,输入…

如何使用 reqwest 包

GET 请求 向连接发起一个 GET 请求:https://hacker-news.firebaseio.com/v0/topstories.json,并解析返回的内容。 尝试发起请求 因为是 GET 请求,可以先在浏览器中进行查看,浏览器可以正常显示一个 id 列表,如下所示…

Anaconda安装

目录 1.Anaconda 安装前是否需要安装Python 2.Anaconda 都包含了什么 3.Anaconda官网下载地址

《Linux从练气到飞升》No.08 Linux的版本管理工具 git

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…

复现沙箱逃逸漏洞

什么是沙箱(sandbox) 在计算机安全性方面,沙箱(沙盒、sanbox)是分离运行程序的安全机制,提供一个隔离环境以运行程序。通常情况下,在沙箱环境下运行的程序访问计算机资源会受到限制或者禁止,资源包括内存、…

【大模型】大模型在软件特性设计中的应用

创建业务对象 1、已有的业务对象可以放入向量数据库 2、如果没有新的业务对象需要创建,直接跳过 3、新的业务对象由用户手动创建 提示词 假设你是一名 Java 软件技术专家,根据如下 yaml 格式生成对应的实体对象,其中 1、最顶层为对象名 2、…

Visual ChatGPT:Microsoft ChatGPT 和 VFM 相结合

推荐:使用 NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 什么是Visual ChatGPT? Visual ChatGPT 是一个包含 Visual Foundation 模型 (VFM) 的系统,可帮助 ChatGPT 更好地理解、生成和编辑视觉信息。VFM 能够指…

前端如何设置表格边框样式和单元格间距?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现思路⭐ 代码演示⭐ 注意事项⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴…

C++ 派生类成员的标识与访问——作用域分辨符

在派生类中,成员可以按访问属性分为以下四种: (1)不可访问成员。这是从基类私有成员继承下来的,派生类或是建立派生类对象的模块都无法访问到它们,如果从派生类继续派生新类,也是无法访问的。 &…

Python魔法解析:探索变量类型的丰富多彩世界!

在Python这个魔法般的编程语言中,变量是连接你与计算机世界的神奇桥梁。然而,这些变量并不是单一的,它们有着丰富多彩的类型。无论你是刚刚踏入编程的大门,还是想要深入了解Python的高级特性,本篇博客将带你探索变量的…

Next.js使用装饰器decorator 解决[作为表达式调用时,无法解析类修饰器的签名。]

Next.js 会自动检测 jsconfig.json 或 tsconfig.json 中的experimentalDecorators。 tsconfig.json {"compilerOptions": {//..."experimentalDecorators": true} }然后重启服务 否则装饰器无法识别 不声明的话vscode 执行 ts检测 也会报错作为表达式调用…

pycharm打开terminal报错

Pycharm打开终端报错如何解决?估计是终端启动conda不顺利,需要重新设置路径。参考以下文章的做法即可。 Windows下Pycharm中Terminal无法进入conda环境和Python Console 不能使用 给pycharm中Terminal 添加新的shell,才可以使用conda环境 W…

黑马大数据学习笔记4-Hive部署和基本操作

目录 思考规划安装MySQL数据库修改root用户密码配置Hadoop下载解压Hive提供MySQL Driver包配置Hive初始化元数据库启动Hive(使用Hadoop用户)Hive体验HiveServer2HiveServer2服务启动 Beeline p48、51、52 https://www.bilibili.com/video/BV1WY4y197g7/?…

Uni-Dock:GPU 分子对接使用教程

github文件下载: git clone https://github.com/dptech-corp/Uni-Dock.git cd Uni-Dock/example/screening_test wget https://github.com/dptech-corp/Uni-Dock/releases/download/1.0.0/unidock 将此文件加入到全局变量中 chmod x unidock sudo mv unidock /…

物联网潜在的巨大价值在于大数据分析

物联网潜在的巨大价值在于大数据分析 从数据里去挖掘市场或者用户的精准需求。 往小的说,后台可以统计用户家里各各插座一年甚至更久的用电情况,这些数据也可以通过app或者小程序展现给用户。 用户可以很直观看到自己一年的用电情况,哪个家…

Blazor前后端框架Known-V1.2.10

V1.2.10 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。 Gitee: https://gitee.com/known/KnownGithub:https://github.com/known/Known 概述 基于C#和Blazo…