有些后端的小伙伴可能会因为接不到参数而苦恼,在方法运行的时候会造成空指针等异常,整理了一下集中接参的方式,废话不多说,直接上代码。
将参数放在URL路径上或者表单方式进行传参
接参方式1:将参数放在URL路径上或者表单方式进行传参
/**
* 接参方式1:将参数放在URL路径上或者表单方式进行传参
* 调用示例:http://localhost:8081/demo/requestStyle/test1?userName=张三&age=18
*
* @param userName 姓名
* @param age 年龄
* <p>
* 备注:参数可不传
*/
@RequestMapping("test1")
public String requestTest1(String userName, Integer age,
HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("userName:" + userName + ",age:" + age);
return userName;
}
接参方式2:通过@RequestParam进行参数名、是否必传设置
/**
* 接参方式2:将参数放在URL路径上或者表单方式进行传参,通过@RequestParam进行参数名、是否必传设置
* 调用示例:http://localhost:8081/demo/requestStyle/test2?userName=刘威东
*
* @param userName 姓名
* @param age 年龄
* <p>
* 备注:@RequestParam用于给参数起别名、设置默认值,并且可设置参数是否是必传,默认为必传,否则请求报400
* @RequestParam(value = "userName", required = false, defaultValue = "World")
*/
@RequestMapping("test2")
public String requestTest2(@RequestParam String userName,
@RequestParam(value = "age", required = false) Integer age1,
String age) {
System.out.println("userName:" + userName + ",age1:" + age1 + "age" + age);
return userName;
}
接参方式3:使用Map进行接参并标注@RequestParam注解
/**
* 接参方式4:将参数放在URL路径上或者表单方式进行传参,使用Map进行接参并标注@RequestParam注解
* 调用示例:http://localhost:8081/demo/requestStyle/test3?userName=张三&age=18&address=北京市海淀区
*
* @param paramMap 接参map
* <p>
* 备注:参数可不传
*/
@RequestMapping("test3")
public String requestTest3(@RequestParam Map<String, Object> paramMap) {
System.out.println(JSON.toJSONString(paramMap));
return JSON.toJSONString(paramMap);
}
接参方式4:使用对象进行接参
/**
* 接参方式4:将参数放在URL路径上或者表单方式进行传参,使用对象进行接参
* 调用示例:http://localhost:8081/demo/requestStyle/test4?userName=张三&age=18&address.city=北京市海淀区&address.street=北四环西路
*
* @param user 接参对象
* <p>
* 备注:参数可不传
*/
@RequestMapping("test4")
public String requestTest4(User user) {
System.out.println(JSON.toJSONString(user));
return JSON.toJSONString(user);
}
将参数放在请求体以JSON格式进行传参
接参方式5:使用Map进行接参并标注@RequestBody注解
/**
* 接参方式5:将参数放在请求体以JSON格式进行传参,使用Map进行接参并标注@RequestBody注解
* 调用示例:http://localhost:8081/demo/requestStyle/test5
* {"userName":"张三","age":18}
*
* @param paramMap 备注:
* 1、发起post请求,后端RequestBody方式接参(postman 在Body raw 最右边选JSON)
* 2、@RequestBody用于post请求请求体json格式接参,并将其转换成对应的数据类型。不能用于get请求
*/
@RequestMapping("test5")
public Object requestTest5(@RequestBody Map<String, Object> paramMap) {
System.out.println(JSON.toJSONString(paramMap));
return paramMap;
}
接参方式6:使用对象进行接参并标注@RequestBody注解
/**
* 接参方式6:将参数放在请求体以JSON格式进行传参,使用对象进行接参并标注@RequestBody注解
* 调用示例:http://localhost:8081/demo/requestStyle/test6
* {"userName":"张三","age":18}
*
* @param user 接参对象
*/
@RequestMapping("test6")
public Object requestTest6(@RequestBody User user) {
System.out.println(JSON.toJSONString(user));
return user;
}
接参方式7:使用List<对象>进行接参并标注@RequestBody注解
/**
* 接参方式7:将参数放在请求体以JSON格式进行传参,使用List<对象>进行接参并标注@RequestBody注解
* 调用示例:http://localhost:8081/demo/requestStyle/test7
* [
* { "userName":"张三","age":18},
* { "userName":"李四","age":22}
* ]
*
* @param users 接参对象集合
*/
@PostMapping("test7")
public Object requestTest7(@RequestBody List<User> users) {
System.out.println(JSON.toJSONString(users));
return users;
}
接参方式8:使用Map<key,对象>进行接参并标注@RequestBody注解
/**
* 接参方式8:将参数放在请求体以JSON格式进行传参,使用Map<key,对象>进行接参并标注@RequestBody注解
* 调用方式:http://localhost:8081/demo/requestStyle/test8
* {
* "1":{ "userName":"张三","age":18},
* "2":{ "userName":"李四","age":22}
* }
*
* @param userMap 接参对象Map
*/
@PostMapping("test8")
public Object requestTest8(@RequestBody Map<String, User> userMap) {
System.out.println(JSON.toJSONString(userMap));
return userMap;
}
将参数以逗号分隔字符串进行传递,后端用List进行接收
/**
* 接参方式9:将参数以逗号分隔字符串进行传递,后端用List进行接收
* 调用示例:http://localhost:8081/demo/requestStyle/test9?ids=1,2,3,4
*
* @param ids id字符串
*/
@RequestMapping("test9")
public String requestTest9(@RequestParam List<String> ids) {
log.debug("ids:{}", JSON.toJSON(ids));
return JSON.toJSONString(ids);
}
通过HttpServletRequest进行参数接收获取
/**
* 接参方式10:通过HttpServletRequest进行参数接收获取
* 调用示例:http://localhost:8081/demo/requestStyle/test10?userName=zs&&age=18
*
* @param request
*/
@RequestMapping("test10")
public String test10(HttpServletRequest request) {
String userName = request.getParameter("userName");
String age = request.getParameter("age");
System.out.println("userName:" + userName);
System.out.println("age:" + age);
return userName;
}