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

【Spring】@RequestMapping、@RestController和Postman

文章目录

  • 1.@RequestMapping 注解介绍
  • 2. @RequestMapping 使用
  • 3. @RequestMapping 是 GET 还是 POST 请求?
    • GET 请求
    • POST 请求
    • 指定 GET/POST 方法类型
  • 2. Postman 介绍
    • 1. 创建请求
    • 2. 传参介绍
      • 1. 普通传参
      • 2. form-data
      • 3. x-www-form-urlencoded
    • `form` 表单,对应 `Content-Type: application/x-www-from-urlencoded`![image.png](https://img-blog.csdnimg.cn/img_convert/0c0d45f1bebbcb962bc64a7c0339d756.png)
      • 4. raw

1.@RequestMapping 注解介绍

@RequestMapping 是 Spring Web MVC 引用程序中最常被用到的注解之一,它是用来注册接口的路由映射的,表示服务收到请求时,路径为 /sayHello 的请求就会调用 sayHi 这个方法的代码

路由映射:当用户访问一个 URL 时,将用户的请求对应到程序中某个类的某个方法的过程就叫路由映射


既然 @RequestMapping 已经可以达到我们的目的了,我们为什么还要加 @RestController 呢?

  • 我们把 @RestController 去掉,再来访问一次image.png
  • 可以看到,程序报了 404,找不到该页面,这就是 @RestController 起到的作用

一个项目中,会有很多类,每个类可能会有很多的方法,Spring 程序怎么知道要执行哪个方法呢?

  • Spring 会对所有的类进行扫描,如果类加了注解 @RestController,Spring 才会去看这个类里面的方法有没有加 @RequestMapping 这个注解

2. @RequestMapping 使用

@RequestMapping 既可修饰方法,也可修饰类。 当修饰类和方法时,访问的地址是类路径+方法路径

  • @RequestMapping 标识一个类:设置映射请求的请求路径的初识信息
  • @RequestMapping 标识一个方法:设置映射请求请求路径的具体信息
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RestController;  @RequestMapping("/user")  
@RestController  
public class UserController {  @RequestMapping("/sayHello")  public String sayHi() {  return "hello, spring mvc";  }  
}
  • 访问地址:
    http://127.0.0.1:8080/user/sayHello image.png|496
  • 注意:@RequestMapping 的 URL 路径最前面加不加 / 都可以,Spring 程序启动时,会进行判断,如果前面没有 /,Spring 会拼接上一个 /

通常情况下,我们加上 /@RequestMapping 的 URL 路径也可以是多层的,最终访问时,依然是类路径+方法路径

import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RestController;  @RequestMapping("/user/m1")  
@RestController  
public class UserController {  @RequestMapping("/sayHello")  public String sayHi() {  return "hello, spring mvc";  }  
}

image.png|479


3. @RequestMapping 是 GET 还是 POST 请求?

我们来测试一下就知道了

GET 请求

浏览器发送的请求类型都是 GET,通过以上案例,可以看出来 @RequestMapping 支持 GET 请求

POST 请求

我们通过 form 表单来构造请求:


创建 test.html,HTML代码:

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <title>Title</title>  
</head>  
<body>  <form action="user/sayHello" method="post">  <input type="submit" value="提交">  </form>  
</body>  
</html>
  • 前端代码放在 static 目录下,访问方式为:
    http://127.0.0.1:8080/test.html image.png|209
  • 如果有多层目录,访问链接从 static 目录开始写image.png|307
  • 如上图,访问链接为:127.0.0.1:8080/html/test.html
    image.png
    从运行结果可以看出:@RequestMapping 既支持 GET 请求,又支持 POST 请求。同理,也支持其他的请求方式,那如何指定 GET 或者 POST 类型呢?

指定 GET/POST 方法类型

我们可以显示指定的 @RequestMapping 来接收 POST 的情况,如下所示:

import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RequestMethod;  
import org.springframework.web.bind.annotation.RestController;  @RestController  
public class UserController {  @RequestMapping(value = "/getRequest", method = RequestMethod.POST)  public String sayHi() {  return "hello, spring mvc";  }  
}

2. Postman 介绍

从上面的案例中,发现了一个新的问题,就是我们测试后端方法时,还需要去写前端代码。这对我们来说,是一件麻烦又痛苦的事情。

随着互联网的发展,也随着项目难度的增加,企业也按照开发的功能,把人员拆分成了不同的团队。界面显示交给“前端开发工程师”,业务逻辑的实现交给了“后端开发工程师”。后端开发工程师,不要求也不需要掌握前端的技能了。

那后端开发工程师如何测试自己的程序呢?使用专业的接口测试工具—— Postman


1. 创建请求

image.png|485
image.png|455

界面介绍image.png


2. 传参介绍

1. 普通传参

也就是通过查询字符串来传参

学习 HTTP 的时候,我们通过 URL 来访问互联网上的某一个资源,URL 的格式如下:image.png 其中,查询字符串就是请求的参数image.png


2. form-data

完整表示为:multipart/form-data。表单提交的数据,在 form 标签中加上 enctyped="multipart/form-data",通常用于提交图片/文件。对应 Content-Type: multipart/form-dataimage.png


3. x-www-form-urlencoded

form 表单,对应 Content-Type: application/x-www-from-urlencodedimage.png

4. raw

可以上传任意格式的文本,可以上传 text、json、xml、html 等image.png


相关文章:

【Spring】@RequestMapping、@RestController和Postman

文章目录 1.RequestMapping 注解介绍2. RequestMapping 使用3. RequestMapping 是 GET 还是 POST 请求&#xff1f;GET 请求POST 请求指定 GET/POST 方法类型 2. Postman 介绍1. 创建请求2. 传参介绍1. 普通传参2. form-data3. x-www-form-urlencoded form 表单&#xff0c;对应…...

【深度学习基础模型】回声状态网络(Echo State Networks, ESN)详细理解并附实现代码。

【深度学习基础模型】回声状态网络&#xff08;Echo State Networks, ESN&#xff09;详细理解并附实现代码。 【深度学习基础模型】回声状态网络&#xff08;Echo State Networks, ESN&#xff09;详细理解并附实现代码。 文章目录 【深度学习基础模型】回声状态网络&#xf…...

Redis的基础认识与在ubuntu上的安装教程

来自Redis的自我介绍 我是Redis&#xff0c;一个中间件&#xff0c;职责是把数据存储在内存上&#xff0c;因此可以作为数据库、缓存、消息队列等场景使用。由于可以把数据存储在内存上&#xff0c;因此江湖人称快枪手 1.redis的功能特性 &#xff08;1&#xff09;数据在内存…...

鸿蒙harmonyos next flutter混合开发之ohos工程引用 har 文件

创建鸿蒙原生工程MyApplication。创建flutter module&#xff0c;生成har文件&#xff0c;并且将flutter module中.ohos文件entryability/EntryAbility.ets、pages/Index.ets分别替换MyApplication中的。 # 1. 创建 flutter子模块工程 flutter create -t module my_flutter_…...

react-问卷星项目(5)

实战 路由 路由设计&#xff0c;网址和页面的关系&#xff0c;就是从业务上分析需要哪些页面哪些页面内容可以抽离&#xff0c;业务流程要有入有出增加页面和Layout模版&#xff0c;模版就是抽离页面公共部分&#xff0c;比如都有顶部或者左侧导航&#xff0c;直接上代码&…...

08.useInterval

在 React 应用中,实现定时器功能通常需要使用 setInterval() 和 clearInterval(),这可能会导致代码复杂和难以维护。useInterval 钩子提供了一种声明式的方法来实现定时器功能,使得定时器的管理更加简单和直观。这个自定义钩子不仅简化了定时器的使用,还解决了一些常见的定…...

【Android 源码分析】Activity生命周期之onDestroy

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…...

增强现实中的物体识别与跟踪

增强现实&#xff08;AR&#xff09;中的物体识别与跟踪是实现虚拟内容与现实世界无缝融合的关键技术。以下是该领域的主要技术和方法概述&#xff1a; 1. 物体识别 1.1 特征提取 SIFT、SURF、ORB&#xff1a;传统的特征提取算法用于识别图像中的关键点并生成描述符&#xf…...

移动端实现下拉刷新和上拉加载(内含案例)

在前端开发中&#xff0c;上拉加载和下拉刷新常用于实现内容的动态加载&#xff0c;尤其在移动端的应用中。下面我将提供一个简单的示例和逻辑说明。 1. 逻辑说明&#xff1a; 下拉刷新&#xff1a; 用户向下拖动页面顶部&#xff0c;触发一个事件&#xff0c;刷新当前内容。需…...

Opencv第十一章——视频处理

1. 读取并显示摄像头视频 1.1 VideoCapture类 VideoCapture类提供了构造方法VideoCapture(),用于完成摄像头的初始化工作&#xff0c;其语法格式如下&#xff1a; capture cv2.VideoCapture(index) 参数说明&#xff1a; capture:要打开的摄像头视频。 index:摄像头设备索引。…...

Flutter 3.24 AAPT: error: resource android:attr/lStar not found.

在Android build,gradle下面&#xff0c;添加右边红框的代码&#xff1a; subprojects {afterEvaluate { project ->if (project.plugins.hasPlugin("com.android.application") ||project.plugins.hasPlugin("com.android.library")) {project.androi…...

C++——输入一个2*3的矩阵, 将这个矩阵向左旋转90度后输出。(要求:使用指针完成。)

没注释的源代码 #include <iostream> using namespace std; int main() { int a[2][3]; cout<<"请输入一个2*3的矩阵:"<<endl; for(int i0;i<2;i) { for(int j0;j<3;j) { cin>>a[i][j…...

AI芯片WT2605C赋能厨房家电,在线对话操控,引领智能烹饪新体验:尽享高效便捷生活

在智能家居的蓬勃发展中&#xff0c;智能厨电作为连接科技与生活的桥梁&#xff0c;正逐步渗透到每一个现代家庭的厨房中。蒸烤箱作为智能厨电的代表&#xff0c;以其丰富的功能和高效的性能&#xff0c;满足了人们对美食的多样化追求。然而&#xff0c;面对众多复杂的操作功能…...

详解调用钉钉AI助理消息API发送钉钉消息卡片给指定单聊用户

文章目录 前言准备工作1、在钉钉开发者后台创建一个钉钉企业内部应用&#xff1b;2、创建并保存好应用的appKey和appSecret&#xff0c;后面用于获取调用API的请求token&#xff1b;3、了解AI助理主动发送消息API&#xff1a;4、应用中配置好所需权限&#xff1a;4.1、权限点4.…...

57 长短期记忆网络(LSTM)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录长短期记忆网络&#xff08;LSTM&#xff09;门控记忆元输入门、忘记门和输出门候选记忆元 (相当于RNN中计算 H t H_t Ht​)记忆元隐状态 从零开始实现初始化模型参数定义模型训练和预测 简洁实现小结练习 长短期记忆网络&#xff08;LSTM&a…...

Linux系统安装教程

Linux安装流程 一、前置准备工作二、开始安装Linux 一、前置准备工作 安装好VMWare虚拟机&#xff0c;并下载Linux系统的安装包&#xff1b; Linux安装包路径为&#xff1a;安装包链接 &#xff0c; 提取码为&#xff1a;4tiM 二、开始安装Linux...

Redis: Sentinel工作原理和故障迁移流程

Sentinel 哨兵几个核心概念 1 ) 定时任务 Sentinel 它是如何工作的&#xff0c;是如何感知到其他的 Sentinel 节点以及 Master/Slave节点的就是通过它的一系列定时任务来做到的&#xff0c;它内部有三个定时任务 第一个就是每一秒每个 Sentinel 对其他 Sentinel 和 Redis 节点…...

通信工程学习:什么是IGMP因特网组管理协议

IGMP&#xff1a;因特网组管理协议 IGMP&#xff08;Internet Group Management Protocol&#xff0c;因特网组管理协议&#xff09;是TCP/IP协议簇中负责组播成员管理的协议。它主要用于在用户主机和与其直接相连的组播路由器之间建立和维护组播组成员关系。以下是关于IGMP协议…...

高效批量导入多个SQL文件至SQL Server数据库的实用方法

当需要批量导入多个SQL文件到SQL Server数据库时&#xff0c;可以通过以下几种方法来实现&#xff1a; 方法一&#xff1a;使用SQLCMD命令行工具&#xff08;亲测可用&#xff09; 准备SQL文件&#xff1a;确保所有的SQL文件都位于同一个文件夹内&#xff0c;并且文件扩展名为…...

【树莓派系列】树莓派wiringPi库详解,官方外设开发

树莓派wiringPi库详解&#xff0c;官方外设开发 文章目录 树莓派wiringPi库详解&#xff0c;官方外设开发一、安装wiringPi库二、wiringPi库API大全1.硬件初始化函数2.通用GPIO控制函数3.时间控制函数4.串口通信串口API串口通信配置多串口通信配置串口自发自收测试串口间通信测…...

前端模块化CommonJs、ESM、AMD总结

前端开发模式进化史 前端工程化正是为了应对这些演化中出现的挑战和需求而发展起来的&#xff1a; 前后端混合&#xff1a;服务端渲染&#xff0c;javascript仅实现交互前后端分离&#xff1a;借助 ajax 实现前后端分离、单页应用(SPA)等新模式模块化开发&#xff1a;npm 管理…...

JavaWeb - 8 - 请求响应 分层解耦

请求响应 请求&#xff08;HttpServletRequest&#xff09;&#xff1a;获取请求数据 响应&#xff08;HttpServletResponse&#xff09;&#xff1a;设置响应数据 BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程…...

1G,2G,3G,4G,5G各代通信技术的关键技术,联系和区别

目录 1G2G3G4G5G各代通信技术的联系和区别联系区别 1G 1G的主要特点是无线移动化。关键技术为蜂窝组网&#xff0c;支持频率复用和移动切换&#xff0c;可以实现个人和个人移动状态下不间断的语音通信。 1G通信系统现已关闭&#xff0c;其主要缺点是串好和盗号。 2G 数字化…...

【宽搜】2. leetcode 102 二叉树的层序遍历

题目描述 题目链接&#xff1a;二叉树的层序遍历 根据上一篇文章的模板可以直接写代码&#xff0c;需要改变的就是将N叉树的child改为二叉树的left和right。 代码 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector&…...

Go语言实现长连接并发框架 - 请求分发器

文章目录 前言接口结构体接口实现项目地址最后 前言 你好&#xff0c;我是醉墨居士&#xff0c;我们上篇博客实现了任务管理器的功能&#xff0c;接下来这篇博客我们将要实现请求分发模块的开发 接口 trait/dispatcher.go type Dispatcher interface {Start()Dispatch(conn…...

Redis: 集群测试和集群原理

集群测试 1 ) SET/GET 命令 测试 set 和 get 因为其他命令也基本相似&#xff0c;我们在 101 节点上尝试连接 103 $ /usr/local/redis/bin/redis-cli -c -a 123456 -h 192.168.10.103 -p 6376我们在插入或读取一个 key的时候&#xff0c;会对这个key做一个hash运算&#xff0c…...

问题解决实录 | bash 中 tmux 颜色显示不全

点我进入博客 如下图&#xff0c;tmux 中颜色显示不全: echo $TERM输出的是 screen 但在 bash 里面输出的是 xterm-256 color 在 bash 里面输入&#xff1a; touch ~/.tmux.conf vim ~/.tmux.conf set -g default-terminal "xterm-256color"使之生效 source …...

古典舞在线交流平台:SpringBoot设计与实现详解

摘 要 随着互联网技术的发展&#xff0c;各类网站应运而生&#xff0c;网站具有新颖、展现全面的特点。因此&#xff0c;为了满足用户古典舞在线交流的需求&#xff0c;特开发了本古典舞在线交流平台。 本古典舞在线交流平台应用Java技术&#xff0c;MYSQL数据库存储数据&#…...

五子棋双人对战项目(6)——对战模块(解读代码)

目录 一、约定前后端交互接口的参数 1、房间准备就绪 &#xff08;1&#xff09;配置 websocket 连接路径 &#xff08;2&#xff09;构造 游戏就绪 的 响应对象 2、“落子” 的请求和响应 &#xff08;1&#xff09;“落子” 请求对象 &#xff08;2&#xff09;“落子…...

查缺补漏----I/O中断处理过程

中断优先级包括响应优先级和处理优先级&#xff0c;响应优先级由硬件线路或查询程序的查询顺序决定&#xff0c;不可动态改变。处理优先级可利用中断屏蔽技术动态调整&#xff0c;以实现多重中断。下面来看他们如何运用在中断处理过程中&#xff1a; 中断控制器位于CPU和外设之…...