【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
      • 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.mzph.cn/pingmian/55671.shtml

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

相关文章

微积分复习笔记 Calculus Volume 1 - 2.2 The Limit of a Function

2.2 The Limit of a Function - Calculus Volume 1 | OpenStax

stateflow一些数据依赖关系的使用

https://www.youtube.com/watch?vNW03ZAQcTuY 某些数据来自其他数据&#xff0c;可以用flow进行一些变形转换 比较简单一点的例子 private val _users MutableStateFlow(emptyList<User>())val users _users.asStateFlow()// private val _loacalUser MutableSta…

MES 制造执行系统的国内外应用现状及国内应用案例

【大家好&#xff0c;我是唐Sun&#xff0c;唐Sun的唐&#xff0c;唐Sun的Sun。一站式数智工厂解决方案服务商】 在当今制造业数字化转型的浪潮中&#xff0c;制造执行系统&#xff08;MES&#xff09;发挥着至关重要的作用。国内外的企业在 MES 系统的应用方面呈现出不同的特…

【记录】PPT|PPT 箭头相交怎么跨过

众所周知&#xff0c;在PPT中实现“跨线”效果并非直接可行&#xff0c;这一功能仅存在于Visio中。然而&#xff0c;通过一些巧妙的方法&#xff0c;我们可以在PPT中模拟出类似的效果。怎么在PPT中画交叉但不重叠的线-百度经验中介绍了一种方法&#xff0c;而本文将介绍一种改进…

Stable Diffusion绘画 | 签名、字体、Logo设计

第1步&#xff0c;使用 PS&#xff08;小白推荐使用 可画&#xff09;准备一个 512*768 的签名、字体、Logo图片&#xff1a; 第2步&#xff0c;来到模型网站&#xff0c;搜索&#x1f50d;关键词“电商”&#xff0c;找到一款喜欢的 LoRA&#xff1a; 第3步&#xff0c;选择一…

《CTF 特训营》:网络安全竞赛的进阶指南

在网络安全领域日益受到重视的今天&#xff0c;CTF&#xff08;Capture The Flag&#xff09;竞赛作为一种检验和提升网络安全技能的方式&#xff0c;受到了越来越多爱好者的关注。而《CTF 特训营》这本书&#xff0c;无疑是一本帮助读者深入了解 CTF 竞赛的优秀读物。 一、书籍…

ansible学习之 Facts

Facts 是什么&#xff1a; 在Ansible中&#xff0c;Facts是关于目标主机的信息&#xff0c;这些信息由Ansible在执行任务之前收集。Facts是特定于主机的&#xff0c;它们提供了系统级的数据&#xff0c;例如操作系统类型、内核版本、IP地址、已安装的包列表等。这些信息可以用…

简单花20分钟学会top 命令手册 (linux上的任务管理器)

1. 介绍 top 是一个常用的 Linux 命令行工具&#xff0c;用于实时监视系统资源和进程的运行情况。用户可以通过 top 命令查看系统的 CPU 使用率、内存占用情况、进程列表等重要信息&#xff0c;帮助快速了解系统运行状态并进行性能监控。该工具可以认为相当于windows上的任务管…

【Jenkins】如何使用 telegram 的机器人进行 jenkins 任务告警

author: jwensh & gpt date: 2024.10.08 要使用 Telegram 机器人发送 Jenkins 任务告警&#xff0c;步骤可以分为以下几个部分&#xff1a;创建 Telegram 机器人、配置 Jenkins 插件或者使用自定义脚本&#xff0c;将 Jenkins 任务的状态通过 Telegram 机器人通知给你。具体…

【SQL】掌握SQL查询技巧:高效数据整合与查询优化

目录 1. SQL 的基本构成2. SQL 联接&#xff08;JOIN&#xff09;2.1 内联接&#xff08;INNER JOIN&#xff09;2.2 外联接&#xff08;OUTER JOIN&#xff09;2.2.1 左外联接&#xff08;LEFT JOIN&#xff09;2.2.2 右外联接&#xff08;RIGHT JOIN&#xff09;2.2.3 全外联…

网页前端开发之Javascript入门篇(8/9):数组

Javascript数组 什么是数组? 答&#xff1a;其概念跟 Python教程 的列表一样&#xff0c;只是叫法不同和语法上有所变化而已。 下面是数组的语法&#xff1a; var aaa "张三"; var bbb [aaa, "李四", "王五"]; // 成员值可以是来自变量&am…

《系统架构设计师教程(第2版)》第17章-通信系统架构设计理论与实践-07-通信网络构建案例分析

文章目录 1. 高可用网络构建分析1.1 网络接入层高可用性设计1.1.1 高可用接入层特征1.1.2 接入汇聚层的方式1&#xff09;倒U 形接法(组网模型一)2&#xff09;U 形接法(组网模型二)3&#xff09;矩形接法(组网模型三&#xff09;4&#xff09;三角形接法(组网模型四) 1.2 网络…

2024年下半年软考准考证什么时候打印?

2024年下半年软考准考证打印入口网址如下&#xff1a; https://bm.ruankao.org.cn/sign/welcome 广东的同学特别注意&#xff1a;准考证打印截止时间是11月8号&#xff0c;也就是考试前一天。一定要提前打印准考证&#xff0c;考试当天是无法打印的。 2024年下半年软考准考证…

pycharm连接linux服务器需要提前安装ssh服务

在 Debian 或 Ubuntu 系统上&#xff0c;使用 APT&#xff1a; bash复制代码 sudo apt-get install openssh-server 在基于 RPM 的系统如 CentOS 或 RHEL 上&#xff0c;使用 YUM 或 DNF&#xff1a; bash复制代码 sudo yum install openssh-server 或对于较新的 RHEL/Cent…

C# 自适应屏幕分辨率

一、新增AutoSizeFormClass.cs class AutoSizeFormClass{//(1).声明结构,只记录窗体和其控件的初始位置和大小。public struct controlRect{public int Left;public int Top;public int Width;public int Height;}//(2).声明 1个对象//注意这里不能使用控件列表记录 List nCtr…

2024四大剪辑软件推荐及下载地址介绍!

在这个数字时代&#xff0c;视频成为了我们记录生活、分享故事的重要手段。无论是专业摄影师还是业余爱好者&#xff0c;都需要一款好用的视频剪辑软件来将自己的创意变为现实。下面&#xff0c;我将为大家介绍几款各有特色的视频剪辑工具&#xff0c;同时也附上下载的地址&…

PAT甲级-1004 Counting Leaves

题目 题目大意 给定一棵树&#xff0c;每个节点从01到n编号&#xff0c;规定01为根节点&#xff0c;求每层叶子节点的个数。 思路 用二维数组存储树。每层叶子节点的个数&#xff0c;只能用dfs深度遍历&#xff0c;用一个数组存储所有层数的叶子节点个数。相同层数并且是叶子…

面向对象技术——设计模式

目录 层次结构 具体设计模式分类 创建型模式&#xff08;处理创建对象&#xff09; 结构型模式&#xff08;处理类和对象的组合&#xff09; 行为型模式&#xff08;描述类或者对象的交互行为&#xff09; 创建型设计模式 ​编辑 结构型设计模式 行为型设计模式​编辑 …

音视频入门基础:FLV专题(13)——FFmpeg源码中,解析任意Type值的SCRIPTDATAVALUE类型的实现

一、SCRIPTDATAVALUE类型 从《音视频入门基础&#xff1a;FLV专题&#xff08;9&#xff09;——Script Tag简介》中可以知道&#xff0c;根据《video_file_format_spec_v10_1.pdf》第80到81页&#xff0c;SCRIPTDATAVALUE类型由一个8位&#xff08;1字节&#xff09;的Type和…

wsl中配置cuda,pytorch,cudnn,vscode

参考链接 查看python版本 从 NVIDIA 的官网上下载 CUDA 的 pin 文件。这个文件确保 CUDA 仓库的优先级更高&#xff0c;防止与其他仓库发生冲突。 wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin将下载的 cuda-wsl-u…