【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


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

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

相关文章

PWM 模式

一、介绍 PWM&#xff08;脉宽调制&#xff0c;Pulse-width modulation&#xff09;是一种通过调节脉冲信号的宽度来控制电能输出的方法。PWM是一种方波信号&#xff0c;通常在电子和电气工程中用于调节功率输送&#xff0c;控制电机速度&#xff0c;调节LED亮度&#xff0c;以…

【CSS Tricks】css动画详解

目录 引言一、动画关键帧序列二、动画各属性拆解1. animation-name2. animation-duration3. animation-delay3.1 设置delay为正值3.2 设置delay为负值 4. animation-direction5. animation-iteration-count6. animation-fill-mode7. animation-play-state8. animation-timing-f…

MySQL的驱动安装

1、下载并安装MySQL 下载地址&#xff1a; 建议在下列框中选择LTS长期支持版本&#xff0c;下载对应的MSI安装文件。 安装完成后&#xff0c;将MySQL的环境bin路径添加到环境变量中。 可以运行MySQL Configurator进行配置&#xff0c;主要设置密码&#xff0c;并初始化。其余…

网络基础 【HTTP】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a; &#x1f4bb;操作环境&#xff1a; CentOS 7.6 华为云远程服务器 &#x1f339;关注我&#x1faf5;带你学习更多Linux知识…

JVM Class类文件结构

国庆节快乐 2024年10月2日17:49:22 目录 前言 magic 数 文件版本 使用JClassLib观察class文件 一般信息 接口 常量池 字段 方法 常量池计数器 常量池 类型 CONSTANT_Methodref_info CONSTANT_Class_info 类型结构总表 访问标志 类索引, …

通信协议感悟

本文结合个人所学&#xff0c;简要讲述SPI&#xff0c;I2C&#xff0c;UART通信的特点&#xff0c;限制。 1.同步通信 UART&#xff0c;SPI&#xff0c;I2C三种串行通讯方式&#xff0c;SPI功能引脚为CS&#xff0c;CLK&#xff0c;MOSI&#xff0c;MISO&#xff1b;I2C功能引…

【api连接ChatGPT的最简单方式】

通过api连接ChatGPT的最简单方式 建立client 其中base_url为代理&#xff0c;若连接官网可省略&#xff1b;配置环境变量 from openai import OpenAI client OpenAI(base_url"https://api.chatanywhere.tech/v1" )或给出api和base_url client OpenAI(api_key&…

冯诺依曼体系结构与操作系统简介

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 冯诺依曼体系结构与操作系统简介 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1.…

使用TensorBoard可视化模型

目录 TensorBoard简介 神经网络模型 可视化 轮次-损失曲线 轮次-准确率曲线 轮次-学习率曲线 迭代-评估准确率曲线 迭代-评估损失曲线 TensorBoard简介 TensorBoard是一款出色的交互式的模型可视化工具。安装TensorFlow时,会自动安装TensorBoard。如图: TensorFlow可…

vscode 连接云服务器(ubantu 20.04)

更改服务器系统 如果云服务器上的系统不是ubantu20.04的&#xff0c;可以进行更改&#xff1a; 登录云服务官网&#xff08;这里以阿里云为例&#xff09;点击控制台 点击服务器实例 点击更多操作、重置系统 点击重置为其他镜像、系统镜像&#xff1a;选择你要使用的系统镜像…

解决MySQL报Incorrect datetime value错误

目录 一、前言二、问题分析三、解决方法 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导&#xff0c;有什么不对的地方&#xff0c;我会及时改进哦~ 博客主页链接点这里–>&#xff1a;权权的博客主页链接 二、问题分析 这个错误通常出现在尝试将一个不…

随笔(四)——代码优化

文章目录 前言1.原本代码2.新增逻辑3.优化逻辑 前言 原逻辑&#xff1a;后端data数据中返回数组&#xff0c;数组中有两个对象&#xff0c;一个是属性指标&#xff0c;一个是应用指标&#xff0c;根据这两个指标展示不同的多选框 1.原本代码 getIndicatorRange(indexReportLi…

企业级版本管理工具(1)----Git

目录 1.Git是什么 2.Git的安装和使用 在Ubuntu下安装命令如下&#xff1a; 使用git --version查看已安装git的版本&#xff1a; 使用git init初始化仓库&#xff1a; 使用tree .git列出目录&#xff1a; 使用git config命令设置姓名和邮箱&#xff1a; 加入--global选项…

【前端】前端数据转化为后端数据

【前端】前端数据转化为后端数据 写在最前面格式化数组代码解释hasOwnProperty是什么&#xff1f; &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限…

【操作系统】引导(Boot)电脑的奇妙开机过程

&#x1f339;&#x1f60a;&#x1f339;博客主页&#xff1a;【Hello_shuoCSDN博客】 ✨操作系统详见 【操作系统专项】 ✨C语言知识详见&#xff1a;【C语言专项】 目录 什么是操作系统的引导&#xff1f; 操作系统的引导&#xff08;开机过程&#xff09; Windows操作系…

渗透测试入门学习——使用python脚本自动识别图片验证码,OCR技术初体验

写在前面 由于验证码在服务端生成后存储在服务器的session中&#xff0c;而标用于标识用户身份的sessionid存在于用户cookie中 所以本次识别验证码时需要用requests.session()创建会话对象&#xff0c;模拟真实的浏览器行为&#xff0c;保持与服务器的会话才能获取登录时服务…

常用排序算法(下)

目录 2.5 冒泡排序 2.6 快速排序 2.6 1 快速排序思路 详细步骤 2.6 2 快速排序递归实现 2.6 3快速排序非递归&#xff1a; 快排非递归的优势 非递归思路 1. 初始化栈 2. 将整个数组的起始和结束索引入栈 3. 循环处理栈中的子数组边界 4. 单趟排序 5. 处理分区后的子…

【论文速看】DL最新进展20241005-Transformer、目标跟踪、Diffusion Transformer

目录 【Transformer】【目标跟踪】【Diffusion Transformer】 【Transformer】 [NeurlPS 2024] Parameter-Inverted Image Pyramid Networks 机构&#xff1a;清华大学、上海AI Lab、上交、港中文、商汤 论文链接&#xff1a;https://arxiv.org/pdf/2406.04330 代码链接&…

C++ | Leetcode C++题解之第454题四数相加II

题目&#xff1a; 题解&#xff1a; class Solution { public:int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {unordered_map<int, int> countAB;for (int u: A) {for (int v: B) {count…

网络基础 【HTTPS】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a; &#x1f4bb;操作环境&#xff1a; CentOS 7.6 华为云远程服务器 &#x1f339;关注我&#x1faf5;带你学习更多Linux知识…