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,一经查实,立即删除!

相关文章

笛卡尔积文本的python处理

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

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 列表,如下所示…

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

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

复现沙箱逃逸漏洞

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

Visual ChatGPT:Microsoft ChatGPT 和 VFM 相结合

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

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

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

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

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

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…

任务15、MidJourney视频(Video)参数动态上线,制作惊艳动画短片

15.1 任务概述 本次任务将帮助你掌握Midjourney中的Video参数,并利用这些参数创作出令人惊艳的绘画作品。通过学习Video参数的基本概念和功能,以及案例的实际应用,你将学会如何正确设置和调整这些参数,从而达到你所期望的绘画效果。最终,你将运用所学知识,生成香奈儿模特…

【C++】C++11 新特性总结 | C++ 常见设计模式总结(秋招篇)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言介绍几种C11新特性介绍一下自动类型推导auto和decltype关键字的用法举例讲一下范围基于的for循环介绍一下列表初始化讲一下右值引用,和左值引用的区…

ubuntu服务器配置ftp服务

需求:配置ftp服务用于在windows电脑上直接浏览、下载、上传ubuntu服务器上的文件,用于文件共享,方便实用 效果:用户打开windows资源管理器后输入ftp://xxx.xxx.xxx.xxx (公网IP地址)后,即可浏览…

map和set的使用总结

目录 一、关联式容器二、键值对三、树形结构的关联式容器3.1 set3.1.1 set介绍3.1.2 set的模板参数列表3.1.3 set的使用实例 3.2 map3.2.1 map的介绍3.2.2 map的参数列表说明3.2.3 map的operator[](very very very好用,map的精华)3.2.4 map的…

如何安全变更亚马逊收款账户?

有太多的卖家想知道如何安全变更亚马逊收款账户,因为更改了第三方收款账户可能会导致二次视频认证或者增强视频。真的是这样吗? 其实不推荐亚马逊店铺正常运营之后去变更信用卡,收款账户等重要资料的,因为玩黑科技的卖家也真的多…

深度学习——划分自定义数据集

深度学习——划分自定义数据集 以人脸表情数据集raf_db为例,初始目录如下: 需要经过处理后返回 train_images, train_label, val_images, val_label 定义 read_split_data(root: str, val_rate: float 0.2) 方法来解决,代码如下&#xff1a…

【Spring】(三)Spring 使用注解存储和读取 Bean对象

文章目录 前言一、使用注解储存 Bean 对象1.1 配置扫描路径1.2 类注解储存 Bean 对象1.2.1 Controller(控制器存储)1.2.2 Service(服务储存)1.2.3 Repository(仓库存储)1.2.4 Component(组件储存…