【Spring】@RequestMapping、@RestController和Postman

news2024/11/24 17:07:57

文章目录

  • 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.coloradmin.cn/o/2188188.html

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

相关文章

【深度学习】损失函数

损失函数&#xff08;Loss Function&#xff09;是机器学习和深度学习模型中的一个核心概念&#xff0c;它用于衡量模型的预测输出与真实标签之间的差异。通过优化&#xff08;最小化&#xff09;损失函数&#xff0c;模型可以不断调整其内部参数&#xff0c;提升预测性能。不同…

通信工程学习:什么是IP网际协议

IP&#xff1a;网际协议 IP网际协议&#xff08;Internet Protocol&#xff0c;简称IP&#xff09;是整个TCP/IP协议栈中的核心协议之一&#xff0c;它负责在网络中传送数据包&#xff0c;并提供寻址和路由功能。以下是对IP网际协议的详细解释&#xff1a; 一、对IP网际协议的…

Ubuntu安装Hadoop3.4

1、创建Hadoop用户 sudo adduser hadoop 将Hadoop加进sudo用户组,赋予更高权限: sudo usermod -G sudo hadoop 3、安装JDK(略) 查看JDK安装路径:which java 和 ls -al 3、配置SSH免密登录 在Hadoop分布式集群环境中,各个机器之间的通信通常需要使用SSH的方式进行连…

判断一个队列实例是否为空Queue.empty()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 判断一个队列实例是否为空 Queue.empty() [太阳]选择题 根据给定的Python代码&#xff0c;哪个选项是错误的&#xff1f; import queue print("【执行】q queue.Queue()") …

react-问卷星项目(5)

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

Solidity 设计模式:实现灵活与可扩展的智能合约架构

Solidity 作为以太坊智能合约的主要编程语言&#xff0c;拥有许多独特的设计模式&#xff0c;这些模式帮助开发者实现更加灵活、可扩展和安全的合约架构。设计模式不仅能够简化开发过程&#xff0c;还能减少常见的编程错误&#xff0c;并提高智能合约的可维护性和可升级性。本文…

舞动春日:SpringBoot打造古典舞在线交流平台

第四章 系统设计 4.1系统概要设计 本古典舞在线交流平台采用B/S结构来开发&#xff0c;这种结构是在互联网兴起后出现的&#xff0c;是一个适用于互联网环境下的模型结构&#xff0c;用户只要能上网通过浏览器就可以在任何时间、任何地点的使用。系统工作原理图如图4-1所示&…

华为OD机试 - 区间交叠问题 - 贪心算法(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

二叉树的创建、遍历及销毁

头文件&#xff1a;link_tree.h #ifndef __LINK_TREE_H__ #define __LINK_TREE_H__ #include <stdio.h> #include <stdlib.h> typedef char datatype;//类型重定义 typedef struct tree_node {datatype data;//数据域&#xff0c;存储数据struct tree_node *left;…

【C++前缀和】1895. 最大的幻方|1781

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode1895. 最大的幻方 难度分&#xff1a;1781 一个 k x k 的 幻方 指的是一个 k x k 填满整数的方格阵&#xff0c;且每一行、每一列以及两条对角线的和 全部相…

SpringBoot平台:古典舞爱好者的在线聚集地

第三章 系统分析 3.1 可行性分析 需要使用大部分精力开发的古典舞在线交流平台为了充分降低开发风险&#xff0c;特意在开发之前进行可行性分析这个验证系统开发是否可行的步骤。本文就会从技术角度&#xff0c;经济角度&#xff0c;还有操作角度等进行综合阐述。 3.1.1技术可行…

rkllm板端推理

交叉编译 在完成模型的量化构建后&#xff0c;就能够在目标硬件平台OK3576上实现模型的推理功能了。 板端推理的示例代码位于kllm-runtime/examples/rkllm_api_demo目录中&#xff0c;该目录提供了针对Android和Linux平台的编译示例。由于我们的开发环境是基于Linux的&#x…

程序猿成长之路之设计模式篇——设计模式简介

无论是对于代码质量还是代码可维护性、可扩展性&#xff0c;使用合适的设计模式都能够起到促进提升的作用&#xff0c;此外在软考的软件工程师、系统架构师职称考试中&#xff0c;设计模式也是必考的一块内容&#xff0c;因此我打算开拓一个新的专栏简单介绍一下设计模式&#…

数据仓库!企业决策的智慧引擎

数据仓库&#xff01;企业决策的智慧引擎 前言数据仓库 前言 今数字化浪潮汹涌澎湃的时代&#xff0c;数据已然成为企业航行于市场海洋的罗盘&#xff0c;而数据仓库则是那承载罗盘的坚固船只。当我们深入探究数据仓库的世界&#xff0c;就仿佛打开了一扇通往企业智慧核心的大…

Gazebo环境下开源UAV与USV联合仿真平台

推荐一个ROS2下基于Gazebo环境的开源UAV与USV联合仿真平台。平台是由两个开源项目共同搭建的。首先是UAV仿真平台&#xff0c;是基于PX4官方仿真平台&#xff08;https://docs.px4.io/main/en/sim_gazebo_gz&#xff09;&#xff1b;其次是USV仿真平台&#xff0c;是基于VRX仿真…

C++语言学习(4): identifier 的概念

1. 什么是 identifier identifier 中文意思是标识符&#xff0c;在 cppreference 中明确提到&#xff0c;identifier 是任意长度的数字、下划线、大写字母、小写字母、unicode 字符 的序列&#xff1a; An identifier is an arbitrarily long sequence of digits, underscores…

FBX福币历史重演,ETH可能会在第四季度出现熊市

知名加密货币分析师Benjamin Cowen警告称&#xff0c;以太坊(ETH)可能在今年最后三个月突然转为看跌。FBX福币凭借用户友好的界面和对透明度的承诺,迅速在加密货币市场中崭露头角,成为广大用户信赖的平台。 考恩告诉他在社交媒体平台十、上的861500名粉丝表示&#xff0c;ETH可…

240 搜索二维矩阵 II

解题思路&#xff1a; \qquad 解这道题最重要的是如何利用从左到右、从上到下为升序的性质&#xff0c;快速找到目标元素。 \qquad 如果从左上角开始查找&#xff0c;如果当前matrix[i][[j] < target&#xff0c;可以向右、向下扩展元素都是升序&#xff0c;但选择哪个方向…

Python+Matplotlib创建高等数学上册P2页例2交互动画

import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import Slider, CheckButtons# 创建图形和坐标轴 fig, ax plt.subplots(figsize(10, 8)) plt.subplots_adjust(left0.1, bottom0.2)# 设置图表 ax.set_xlim([-1.5, 1.5]) ax.set_ylim([-1.5, 1.5…

C(九)while循环 --- 军训匕首操情景

匕首操&#xff0c;oi~oi~oi~~~~~ 接下来的几篇推文&#xff0c;杰哥记录的是三大循环结构的运行流程及其变式。 本篇的主角是while循环。&#x1f449; 目录&#xff1a; while循环 的组成、运行流程及其变式关键字break 和 continue 在while 循环中的作用while 循环的嵌套题目…