【SpringBoot】SpringBoot Controller接收参数的常用方式

news2024/12/30 2:22:03

在Controller中加入@RestController,效果等于@Controller + @ResponseBody

1 请求路径参数

直接把表单里面的参数写进 Controller 相应方法的形参中去,这个获取参数的方法适合get提交,而不适合post提交。

  • @PathVariable获取(这个当然不分get和post了,是url提取嘛)
    @RequestMapping("/userInfo/{id}")
    public String userInfo(@PathVariable String id) {
        System.out.println(id);
        return id;
    }
http://localhost:8080/userInfo/142857
  • @RequestParam获取查询参数,如url?id=1428571
    • 当请求参数名与方法形参变量名相同时,可不加@RequestParam注解
    • @RequestParam注解的required属性默认为true,若参数不是必须传递需改为false
    @RequestMapping("/userInfo")
    public String userInfo(@RequestParam(name = "id") String id) {
        System.out.println(id);
        return id;
    }
http://localhost:8080/userInfo?id=12345671

2 实体参数

通过建立一个bean来获取参数:

package com.example.helloworld.model;

public class User {
    private String id;
    private String name;
    private Notebook notebook;

    User(String id, String name) {
        this.id  = id;
        this.name = name;
        this.notebook = new Notebook();
    }

    public String getName() {
        return name;
    }
}

	@RequestMapping("/userInfo")
    public String userInfo(User user) {
        System.out.println(user.getName());
        return user.getName();
    }
http://localhost:8080/userInfo?id=12345671&name=xiaokou

3 日期参数

http://localhost:8080/problemBook?id=142857&time=2022-01-01 00:00:00
@RequestMapping("/problemBook")
    public String problemBook(String id, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) {
        System.out.println(id);
        System.out.println(time);
        return "OK";
    }

但“yyyy-MM-dd”就识别有问题……

4 Json Body参数

通常用于Post请求。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UC3GsHzo-1685868352014)(【SpringBoot】SpringBoot-Controller接收参数的常用方式/image-20230604162017983.png)]

使用RequestBody注解。

	@PostMapping("/finishProblem")
    public String finishProblem(@RequestBody User user) {
        System.out.println(user.getName());
        return "OK";
    }

也可以使用一个map接收:

    @PostMapping("/finishProblem")
    public String finishProblem(@RequestBody Map<String, String> params) {
        System.out.println(params.get("uid"));
        System.out.println(params.get("problemId"));
        return "OK";
    }

5 返回结果

@ResponseBody用于Controller类或者方法上,将方法返回值直接响应,若返回值类型是实体对象或者集合,将转为json格式相应。

为了有统一的返回方式,定义统一响应结果Result

package com.example.helloworld.controller;


/**
 * code response状态码
 * obj 返回给前端的数据
 * message 附加信息,说明具体情况
 */

public class Result {
    public int code;
    public String message;
    public Object data;

    public Result(int code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    public static Result success(Object data) {
        return new Result(200, "success", data);
    }

    public static Result success() {
        return new Result(200, "success", null);
    }

    public static Result error(String message) {
        return new Result(404, message, null);
    }
}

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

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

相关文章

Flask学习笔记(1)创建RESTful API

从本文起&#xff0c;笔者将会更新一系列Flask学习笔记。   本文将会讲述在Flask中如何创建RESTful API。在此之前&#xff0c;我们有必要了解下什么是RESTful架构。 RESTful架构 RESTful架构自从2000年被Roy Feilding提出后就受到广泛关注&#xff0c;并被成功地应用于成千…

美国同事的那些离职类型

这次公司的裁员是教科书基本的真的是没错。 但是美国同事的心态和离职类型也让人打开眼界。 后来在公司同事建立的被裁群中才了解到&#xff0c;PM 组也是重灾区&#xff0c;也超过了 50%&#xff0c;不少在公司工作超过 5 年的 PM 都被毫不留情的裁掉了。 就算这次勉勉强强被…

怎么实现常用网络接口自动化测试框架应用?

一、RESTful&#xff08;resource representational state transfer)类型接口测试 (一&#xff09;GUI界面测试工具&#xff1a;jmeter 1、添加线程组 2、添加http请求 3、为线程组添加察看结果树 4、写入接口参数并运行 5、在查看结果树窗口查看结果 6、多组数据可增加CSVDat…

达梦主备守护集群介绍

DM数据守护一主一备或一主多备是一种集成化的高可用、高性能数据库解决方案&#xff0c;是数据库异地容灾的首选方案。通过部署 DM 数据守护&#xff0c;可以在硬件故障&#xff08;如磁盘损坏&#xff09;、自然灾害&#xff08;地震、火灾&#xff09;等极端情况下&#xff0…

javaScript蓝桥杯----收集帛书碎⽚

目录 一、介绍二、准备三、目标四、代码五、完成 一、介绍 三叔在外出考古途中⽆意发现了⼀份战国帛书&#xff0c;帛书边缘有被明显裁剪过的痕迹&#xff0c;单从帛书⽚段&#xff0c;提到记录了神秘⽂物的地点&#xff0c;⽆奈帛书不完整&#xff0c;为了早⽇将⽂物带回博物…

chatgpt赋能python:PythonGUI入门指南:如何安装各种GUI工具包

Python GUI入门指南&#xff1a;如何安装各种GUI工具包 如果你是一名Python开发人员&#xff0c;那么你肯定知道GUI是不可或缺的。它是让用户和程序之间进行交互的一种方法。在Python中&#xff0c;有很多GUI工具包可以选择。但是&#xff0c;安装它们可能会让人感到困惑。在这…

短视频矩阵系统源码

短视频矩阵源码是一种基于短视频技术开发的软件源代码&#xff0c;它包含了短视频录制、编辑、发布以及播放等模块的实现。该源码可以为开发者提供一个快速搭建短视频应用的基础架构&#xff0c;帮助开发者节省大量的时间和精力&#xff0c;同时提高了应用的开发效率和质量。通…

PCL 三角插值

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 地理信息中经常会用到三角插值这种方式来获取指定位置的高程值。其原理如下所述: 假设有一个三角形是这样的: 此外,假设每个顶点(角)都有某种关联值。例如:假设每个顶点都有一个相关联的颜色(或高程值等)。这个…

ubuntu16+nvidia驱动+cuda+an +pytorch安装

一、ubuntu16.04 通过镜像安装 二、nvidia驱动 1、 命令行输入 ubuntu-drivers devices 会出现可以安装以及推荐的驱动&#xff0c;后面带recommended就是推荐的版本 2、安装 驱动 sudo apt-get install nvidia-465 3、不过我安装的是384的版本&#xff0c;安装好后输入 nvid…

【JavaSE】Java(五十二):核心要点总结

文章目录 1. java中普通类和抽象类有哪些区别2. 接口和抽象类有什么区别3. java中的IO流分为几种4. BIO、NIO、AIO 有谁没区别5. Files 的常用方法有哪些 1. java中普通类和抽象类有哪些区别 Java中普通类&#xff08;也就是非抽象类&#xff09;和抽象类有以下几个区别&#x…

chatgpt赋能python:Python如何算圆的面积

Python如何算圆的面积 在数学中&#xff0c;一个圆的面积通过以下公式计算&#xff1a;S πr&#xff0c;其中S是圆的面积&#xff0c;r是圆的半径&#xff0c;π是一个常数&#xff0c;约等于3.14。 Python是一种用于编写高级程序的解释型编程语言。作为一种动态语言&#…

chatgpt赋能python:Python如何自动换行

Python如何自动换行 在Python编程中&#xff0c;有时候我们需要输出很长的文本或字符串&#xff0c;这时候就需要自动换行的功能。本文将介绍Python中实现自动换行的几种方法。 方法一&#xff1a;使用字符拼接 在Python中&#xff0c;我们可以使用"“来拼接字符串。如…

chatgpt赋能python:Python如何更改目录

Python如何更改目录 介绍 Python作为一门通用编程语言&#xff0c;提供了许多用于操作计算机文件系统的方法&#xff0c;其中就包括更改目录的方法。更改目录可以让我们在不离开当前脚本的情况下&#xff0c;改变当前脚本操作文件的位置&#xff0c;使我们更容易管理和访问所…

Leetcode刷题笔记--Hot01-10

1--两数之和 讲解参考&#xff1a;LeetCode 最热门 100 题 主要思路&#xff1a; 对数组进行从小到大的排序&#xff0c;使用两个指针指向第一个元素和最后一个元素&#xff0c;即左指针指向第一个元素A[l]&#xff0c;右指针指向最后一个元素A[R]&#xff1b; 判断两个指针当前…

Threejs进阶之十七:Threejs中的Path、Shape和ShapeGeometry类

在实际的应用中&#xff0c;有时候需要我们根据一个二维图形拉伸为三维图形的情况&#xff0c;这就需要我们对Threejs中提供的二维图形相关的类有一个深入的了解&#xff0c;这一节我们就深入的聊一聊Threejs中的Path、Shape和ShapeGeometry类 目录 Path类构造函数常用属性常用…

chatgpt赋能python:Python字符串跨行:如何在代码中处理长字符串

Python字符串跨行&#xff1a;如何在代码中处理长字符串 当你编写Python代码时&#xff0c;可能会遇到需要编写很长的字符串的情况。例如&#xff0c;你可能需要将一大段文本或HTML代码嵌入到Python程序中。在这种情况下&#xff0c;你需要学会如何将长字符串跨行编写&#xf…

[chatGPT攻略] 如何检测文本内容是否由ChatGPT生成 ?

[chatGPT攻略] 如何检测文本内容是否由ChatGPT生成 ? 在 ChatGPT 爆火的两个月内&#xff0c;学生就已经自发用这种工具做作业、写论文偷懒&#xff0c;编剧会用它编故事试试出乎人意料的故事走向&#xff0c;文案编辑用它来给自己打工。 在用工具给自己省事这件事上&#xf…

无条件抽奖和条件抽奖(互动功能发起端JS-SDK)

无条件抽奖功能概述 允许开始前对抽奖进行奖品、中奖人数、中奖人员等设置&#xff0c;完成设置后可以开始抽奖。 本功能只支持讲师、嘉宾、助教、管理员这四种角色进行抽奖的发起和停止。支持自定义设置中奖用户信息采集字段。支持设置预设中奖用户。支持设置定时开奖可查看…

论文翻译——Test Selection for Deep Learning Systems

文章目录 AbstractIntroductionRelated work&#xff08;这部分没有翻译完全&#xff0c;我主要是用来做课程回报的&#xff0c;后面的实验就够讲了&#xff0c;这里就不讲了&#xff09;3 Motivation and Problem Definition4 Test Selection MetricsMetrics Derived from the…

C++与Qt深度融合:高效设计多线程应用框架

C与Qt深度融合&#xff1a;高效设计多线程应用框架 1. C与Qt线程的混合使用1.1 C线程与Qt线程的基本概念1.2 线程间的相互依赖关系1.3 设计合理的代码框架 二、深入理解C和Qt线程模型2.1 C线程模型2.2 Qt线程模型2.3 C和Qt线程模型的比较 三、C和Qt线程间的互操作性3.1 std::th…