首页 > 其他分享 >post前台传参和后台接收参数

post前台传参和后台接收参数

时间:2023-08-07 17:25:27浏览次数:43  
标签:传参 String age PostMapping 前台 请求 post zhangsan name

import com.fasterxml.jackson.databind.JsonNode;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
* @Date 2023-08-07 17:12:55
* 记录常用的post的传参方式
*/
@RestController
public class PostController {


// 参数在请求头里的情况

/**
* 注意: 这种方式PostMapping里的占位符’{id}’,要和接收时参数PathVariable后面括号内的字段一样
* 请求头: http://127.0.0.1:8080/test/34
* 请求体:
* 输出: 34
*/
@PostMapping("/test/{Id}")
public void test(@PathVariable("Id") String sid) {
System.out.println(sid);
}

/**
* 请求头: http://127.0.0.1:8080/test/34/zhangsan
* 请求体:
* 输出: id:34,name:zhangsan
*/
@PostMapping("/test/{Id}/{name}")
public void test(@PathVariable("Id") String sid, @PathVariable("name") String name) {
System.out.println("id:" + sid + ",name:" + name);
}


// 参数在请求体头和请求体中

/**
* 这是一种将请求体中的值封装成Map的方法
* 请求头: http://127.0.0.1:8080/test1
* 请求体: {"name","zhangsan"}
* 输出: zhangsan
*/
@PostMapping("/test1")
public void test1(@RequestBody Map<String,Object> map) {
String name = map.get("name").toString();
System.out.println(name);
}

/**
* 请求头: http://127.0.0.1:8080/test11
* 请求体: {"name","zhangsan","age",13}
* 输出: zhangsan,13
*/
@PostMapping("/test11")
public void test11(@RequestBody Map<String,Object> map) {
String name = map.get("name").toString();
int age = Integer.parseInt(map.get("age").toString());
System.out.println(name+","+age);
}

/**
* 注意:这种方式请求体中的"name"要和接收时的参数名称不需要一样
* 请求头: http://127.0.0.1:8080/test2
* 请求体: {"name":"zhangsan"}
* 输出: {"name":"zhangsan"}
*/
@PostMapping("/test2")
public void test2(@RequestBody String body) {
System.out.println(body);
}

/**
* 引入依赖
* <dependency>
* <groupId>com.alibaba</groupId>
* <artifactId>fastjson</artifactId>
* <version>1.2.72</version>
* </dependency>
* */
/**
* 请求头: http://127.0.0.1:8080/test21
* 请求体: {"name":"zhangsan","age":13}
* 输出: name,zhangsan
* age,13
*/
@PostMapping("/test21")
public void test21(@RequestBody String body) {
//所有内容都在body中,需要解析出来
Map map = (Map) JSON.parse(body);
Set set = map.keySet();
for (Object k : set) {
Object v = map.get(k);
System.out.println(k.toString() + "," + v.toString());
}
}

/**
* 使用JsonNode来接收,取值时与map取值类似
* 请求头: http://127.0.0.1:8080/test22
* 请求体: {"name":"zhangsan","age":13}
* 输出: zhangsan,13
*/
@PostMapping("/test22")
public void test22(@RequestBody JsonNode jsonNode) {
String name = jsonNode.get("name").asText();
int age = jsonNode.get("age").asInt();
System.out.println(name + "," + age);
}

/**
* 注意:Json的自动转换,只能转换简单类,如果类中包含另一个类,则无法自动转换,传入的时候需要把内部类
* 变成String,然后用JSON.parse()解析出来
* person类的属性如下
* private String name;
* private Integer age;
* */
/**
* 使用实体类来封装,字段匹配上就赋值,没匹配上字段的值就为默认值,比如String的默认值就为null
* 请求头: http://127.0.0.1:8080/test23
* 请求体: {"name":"zhangsan","age":13}
* 输出: Person(name=zhangsan, age=13)
*/
@PostMapping("/test23")
public void test23(@RequestBody Person person) {
System.out.println(person.toString());
}

/**
* 注意:此为类中包含另一个类的解决办法
* student类的属性如下
* private String name;
* private Integer age;
* private String temporaryString;
* private List<Score> scoreList;
* */
/**
* 思路:前台传值时把内部的对象转成字符串,类似于"temporaryString":JSON.stringify(对象或对象数组),我此次用的对象数组
* 请求头: http://127.0.0.1:8080/test24
* 请求体: {"name": "zhangsan","age": 13,"temporaryString": "[{'grade':'50'},{'grade':'60'}]"}
* 输出: Student(name=zhangsan, age=13, temporaryString=[{'grade':'50'},{'grade':'60'}],
* scoreList=[Score(grade=50), Score(grade=60)])
*/
@PostMapping("/test24")
public void test24(@RequestBody Student student) {
// 拿到字符串,转成Score数组,再塞回Student对象
String temporaryString = student.getTemporaryString();
List<Score> scores = JSON.parseArray(temporaryString, Score.class);
student.setScoreList(scores);
System.out.println(student.toString());
}

/**
* PathVariable和RequestBody混合使用
* 请求头: http://127.0.0.1:8080/test3/3
* 请求体: {"name": "zhangsan"}
* 输出:
*/
@PostMapping("/test3/{id}")
public void test3(@PathVariable("id") String id, @RequestBody JsonNode jsonNode) {
String name = jsonNode.get("name").asText();
System.out.println(id+","+name);
}


/**
* 注意文件上传比较特殊,它并不是以json形式来传递的
*/
@PostMapping("uploadFile")
public void upLoadFile(MultipartFile file, String dest) {
// 获取文件名
String fileName = file.getOriginalFilename();
}
}

 
  

 

标签:传参,String,age,PostMapping,前台,请求,post,zhangsan,name
From: https://www.cnblogs.com/Jx0605/p/17611928.html

相关文章

  • 在vite中使用postcss
    postcss是什么?1,增强代码的可读性利用从CanIUse网站获取的数据为CSS规则添加特定厂商的前缀。Autoprefixer自动获取浏览器的流行度和能够支持的属性,并根据这些数据帮你自动为CSS规则添加前缀。2,将未来的CSS特性带到今天PostCSSPresetEnv帮你将最新的CSS语法转......
  • PostgreSQL数据库版本升级
    PostgreSQL数据库版本升级Postgresql是一个非常活跃的社区开源项目,更新速度很快,每一次版本的更新都会积极的修复旧版本的BUG,性能上也会有不同幅度的提升。10之前的版本由三部分组成,10开始只有两部分数字组成。PostgreSQL版本发布规则,一年一个大版本,一个季度一个小版本;P......
  • 【mybatis】传参异常:Parameter ‘xxx‘ not found. Available parameters are [xxx,xx
    造成该异常可能的原因有:1、多个传参没有用@Param注解,或者注解导入的包有误。2、#{xxx}填写错误;3、#{xxx}遗漏,特别是有些写在select里的;4、写在bean类里,后面新需求增加变量的,没有加上bean的前缀:"bean.xxx";5、在xml文件里不需要的变量,特别是包含了#{}的,使用不正确的注释方式注......
  • postgresql满语句查询及灭杀
    1.查询慢语句查询当前库超过指定运行时长的语句--获取正在执行的sql进程select c.relname对象名称, l.locktype可锁对象的类型, l.pid进程id, l.mode持有的锁模式, l.granted是否已经对锁进行授权, l.fastpath, psa.datname数据库名称, psa.wait_event等待事件,......
  • Postman 应用数据移到另一台电脑
      Postman-win64-Setup.exe安装包, 在新电脑打开,跳过注册直接使用,就会产生快捷方式,所在的路径如下: 将旧电脑的此路径下的文件夹拷贝到新电脑的对应路径下尽可。 新电脑打开Postman后就可以看到历史记录了。 ......
  • 发布关于PostGIS对于USD格式的拓展
    我们非常高兴的发布为了一年一度的SIGGRAPH2023发布关于为PostGIS支持USD格式的新拓展。新添加了3个函数ST_AsUSDA(geomgeometry,usd_root_nametext,usd_geom_nametext,widthfloat)ST_AsUSDC(geomgeometry,usd_root_nametext,usd_geom_nametext,widthfloat)ST......
  • post请求,go源码会把“+”字符转成了空格导致的验签失败问题
    问题描述:安卓7.29的包客户端书城男女图书页面显示异常,冷启动、下拉刷新等都无法恢复,个别用户清除缓存数据后恢复。(说明:安卓从72880开始的包,客户端书城接口升级为v7:/api/v7/book-store,post请求) 问题原因:线上书城男女图书v7接口part1的post接口请求,个别手机出现401验签失败。......
  • Postgres 和 MySQL 应该怎么选?
    当选择数据库系统时,PostgreSQL和MySQL是两个常见的选择。它们都是开源关系数据库管理系统,具有不同的特点和优势。在这篇文章中,我将详细比较PostgreSQL和MySQL,以帮助您做出决策。一、背景和社区支持PostgreSQL是一个由PostgreSQL全球发展集团(一个全球性的开源数据库项目)开......
  • PostgreSQL-unlogged table
    PostgreSQL中,有一种表的类型为unloggedtable,该种类型的表不会写入wal日志中,所以在写入的速度上比普通的堆表快很多,但是该表在数据库崩溃的时候,会被truncate,数据会丢失,而且该表也不支持流复制,所以在standby节点是无法查到该表数据的。在该表上创建的索引也是unlogged索引。创建un......
  • JPA Query in 集合(:和?传参)
    ?传参@Query(value="SELECT*FROMtuxinggeoASstiWHEREtype=?1ANDindex=?2",nativeQuery=true)List<TuxingGeo>getLayerByTypeAndIndex(inttype,intindex);:传参@Query(value="SELECT*FROMtuxinggeoASstiW......