前端传递参数给后端,一直返回400

2023-05-16

太久没写SpringBoot的代码了,最近一直在刷题和复习基础【IO,集合,反射,MySQL等】。但是,前两天突发奇想,想写点东西,然后就在我今天进行Swagger测试的时候意外发现前端调用的Uri死活传不到后端,一直返回400,于是在我的一通百度后,陷入了沉思……就在即将放弃的时候【主要是( ̄o ̄) . z Z】,我发现了规律,下面就有我来讲解一下我的解决方案吧

一、问题出现原因
首先分析下我的歌曲Uri

https://kg3.qq.com/node/WEaBGH7Vk0/play_v2?s=yw01gByXE9ICzyb7&shareuid=639b9c8221283588&topsource=a0_pn201001004_z11_u1617

我想有经验的人应该一看就能看出问题吧,没错就是有很多的 " / " ,然后我当时定义的后端接收类型是 String

所以个人感觉应该是 " / " 的问题,将请求地址定义到了一个不存在的接口

二、解决方案
将后端接收的参数类型改为Json

三、SpringBoot接收前端参数json格式的五种方式

不啰嗦,直接上代码

import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject;

@RestController
public class HelloController2 {

    /*
     * 第一种:以RequestParam接收
     * http://localhost:8080/test1?id=1
     * */
    @RequestMapping(value = "/test1",method=RequestMethod.GET)
    public void test1(@RequestParam("id") String id){
        System.out.println("id:"+id);    
    }

    /*
     * 第二种:以实体类接收
     * {"username": "zhangsan","id":"2"}
     * */
    @RequestMapping(value = "/test2",method=RequestMethod.POST)
    public void test1(@RequestBody User user) throws Exception{
        System.out.println("username:"+user.getUsername());    
    }

    /*
     * 第三种:以Map接收
     * {"username": "zhangsan","id":"2"}
     * */
    @RequestMapping(value = "/test3",method=RequestMethod.POST)
    public void test3(@RequestBody Map<String, String> map) throws Exception{
        System.out.println("username:"+map.get("username"));    
    }

    /*
     * 第四种:以List接收
     * [{"username": "zhangsan","id":"2"},{"username": "lisi","id":"1"}]
     * */
    @RequestMapping(value = "/test4",method=RequestMethod.POST)
    public void test4(@RequestBody List<User> list) throws Exception{
        for(User user:list){
            System.out.println("username:"+user.getUsername());
        }
    }

    /*
     * 第五种:以JSON对象接收
     * {"username": "zhangsan","id":"2","role":{"rolename":"admin"}}
     * */
    @RequestMapping(value = "/test5",method=RequestMethod.POST)
    public void test5(@RequestBody JSONObject json) throws Exception{
        System.out.println("username:"+json.getString("username"));    
        System.out.println("rolename:"+json.getJSONObject("role").getString("rolename"));
    }
}

总结

通过这件事,我发现开发经验真的需要平时积累【有事没事上来水一篇贴】,对于基础知识的掌握一定要牢固,总之,多练就对了,要相信1W小时定律!!!
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端传递参数给后端,一直返回400 的相关文章

  • mysql出现提示错误10061的解决方法

    MySQL出现提示错误10061的解决方法 错误提示 xff1a 今天打开Navicat连接mysql突然提示 2003 Can t connect to MySQL server on localhost 10061 xff09 的错误提
  • 3分钟爬取全网10W+爆款,脚本无偿分享,零基础拿来直接就能用!

    市面上的新媒体资料都是过去时了 xff0c 只有最新的爆款文才是新媒体人的福音 xff01 三分钟爬取全网10W 43 爆款文 xff01 爬虫脚本无偿分享 xff0c 拿来就能直接用 xff0c 零基础也能用 xff01 需要的看图 xf
  • 使用Wake On Lan远程唤醒

    使用Wake On Lan远程唤醒 客厅里的那台htpc xff0c 在无下片任务的时候 xff0c 大部分时间里都在白白浪费电 主板是支持wake on lan的 xff0c 把它弄成可以远程控制会比较经济 首先要设置bios xff0c
  • .gitignore文件作用

    gitignore文件用于在将文件提交到git暂存区时 xff0c 指定将哪些文件排除 xff1b 1 gitignore文件基本用法 在 git文件所在的目录创建 gitignore 文件 文件内容如下 span class token
  • 《计算机应用基础》形考作业及答案

    国家开放大学 计算机应用基础 形考作业 及 答案 题目1 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 兔子bu蹬鹰 在Word 2010中编辑文本时 编辑
  • php操作redis代码

    lt php Redis缓存操作 64 author hxm 64 version 1 0 64 since 2015 05 04 class RCache extends Object implements CacheFace priva
  • C++实现归并排序

    C 43 43 实现归并排序 span class token comment span span class token comment main cpp span span class token comment MergeSort s
  • LinuxNote 第二章 新手必须掌握的Linux命令

    目录 第二章 新手必须掌握的Linux命令2 1 Shell2 2 命令格式及帮助命令 man2 2 1 命令格式2 2 2 帮助命令 man 2 3 常用的系统工作命令2 3 1 echo2 3 2 date2 3 3 reboot2 3
  • Linux PXE无盘工作站

    关于PXE无盘工作站系统的简介 PXE无盘工作站系统是指由一台或多台 系统服务器 和多台 PXE客户端 无盘工作站 通过 交换机 相连组成的局域网系统 xff08 图1 xff1a 无盘工作站系统部署拓扑图 xff09 系统服务器 xff1
  • 环形缓冲区的实现原理

    http blog chinaunix net uid 7491192 id 2051200 html 在通信程序中 xff0c 经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据 环形缓冲区是一个先进先出的循环缓冲区 xff0c
  • 计算任意二叉树T中其数据域大于等于x的结点个数并返回该值

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 使用Mybatis这篇就够了

    第一章 框架概述 1 1 三层架构 界面层 xff1a 和用户打交道的 xff0c 接收用户的请求参数 xff0c 显示处理结果的 xff08 jsp xff0c html xff0c servlet xff09 业务逻辑层 xff1a 接
  • Web项目中访问路径问题

    访问路径问题 1 1访问路径的组成 URL xff0c 统一资源定位符 xff0c 用于定位资源的一种方式 通常的 URL 资源访问路径由两部分 构成 xff1a 资源路径与资源名称 资源名称指的是要访问资源的直接名称 xff0c 如 sh
  • 解决Navicat远程登录服务器的Mysql服务Password authentication failed

    常规用的是grant all privileges on to root 64 identified by zhaiwenhai 这里设置的密码 SSH用的是服务器的用户名和密码来进行验证
  • 一篇打通java路径问题

    访问路径问题 1 1访问路径的组成 URL xff0c 统一资源定位符 xff0c 用于定位资源的一种方式 通常的 URL 资源访问路径由两部分 构成 xff1a 资源路径与资源名称 资源名称指的是要访问资源的直接名称 xff0c 如 sh
  • ElasticSearch为索引库添加静态映射报:Failed to parse mapping [properties]: Root mapping definition has unsupport

    代码 span class token constant PUT span span class token operator span my index span class token punctuation span span cla
  • Adobe XD常见问题和解决方案

    1 Adobe XD软件是什么 xff1f Adobe XD是一种端到端解决方案 xff0c 用于设计网站和移动应用程序的用户体验 xff0c 并为其构建原型 使用功能强大的工具 xff0c 在线框 视觉设计 交互设计 原型构建 预览和共享
  • 2022最新JSON解析计费系统扶风视频解析计费系统V1.8详解

    我个人认为扶风的计费会比云海的比较相对操作好上手 xff0c 且 bug 也少 xff0c 而且之前的之前的版本加载速度实在慢 xff0c 真心感人 扶风计费程序介绍 后台可对接多个专用 json 接口解析 xff0c 可以 m3u8 资源
  • 五大适合STM32的嵌入式操作系统

    基于STM平台且满足实时控制要求操作系统 xff0c 有以下5种可供移植选择 分别为 Clinux C xff0f OS II eCos FreeRTOS和都江堰操作系统 djyos 下面分别介绍这五种嵌入式操作系统的特点及不足 1 Cli
  • 我的2013这一年 -- 唯一关键词 变化

    又一年 xff0c 又是一个年终总结 xff0c 2013的关键词就一个 变化 xff0c 貌似去年是三个 起初没怎么注意已到了2013年未 xff0c 圣诞前后 xff0c CSDN上开始扎堆出现年终总结的帖子或博客文章 xff0c 还有

随机推荐