JAVA读取前端http请求参数的方法
1、利用@PathVariable
参考:@PathVariable注解的用法和作用
这种是restful风格的读取参数的方法,一般用于GET请求
前端传参方法
- /order/1 HTTP GET :得到 id = 1 的 order
- /order/1 HTTP DELETE:删除 id = 1的 order
- /order/1 HTTP PUT:更新id = 1的 order
- /order/1 HTTP POST:新增 order
/**
* 根据id查询用户信息
*
* @param id
* @return
*/
@GetMapping("/{id}")
public R<Users> getById(@PathVariable Long id) {
Users users = usersService.getById(id);
if (users != null) {
return R.success(users);
}
return R.error("没有查询到对应的用户信息");
}
2、利用@RequestParam
参考:https://blog.csdn.net/ChineseSoftware/article/details/118414454
用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型)
后端使用是,可以省略@RequestParam,如果不指定接收参数的方法,就是默认@RequestParam
后端接收参数,可以使用多参数的方法接受
/**
* 用户新增
*
* @param users
* @return
*/
@PostMapping
public R<String> save(@RequestParam Users users) {
usersService.save(users);
return R.success("新增用户成功!");
}
3、利用@RequestBody
@RequestBody注解一般主要是用来处理content-type:”application/json charset=utf-8”或者content-type:”application/xml charset=utf-8”两种请求数据,一般是异步请求用的比较多些,
前端用json或者xml来发送数据的。
/**
* 封装put请求 RESTful风格,主要用于“修改”
* @param url 请求地址
* @param data 请求数据:JSON
* @returns {Promise} 成功返回的是res.data数据
*/
export function PUT(url, data = {}) {
return new Promise((resolve, reject) => {
axios({
method: 'put',
url,
data,
headers: {
'content-type': 'application/json'
}
})
.then(res => {
resolve(res.data);
}).catch(err => {
reject(err)
});
})
}
后端接收,只能使用一个对象来接收参数,可以使用java对象,或者使用map对象,或者list也可以。
/**
* 用户信息分页查询
* <p>
* // * @param pagenum
* // * @param pagesize
*
* @param users
* @return
*/
@PostMapping("/show")
public R show(@RequestBody Users users) {
return usersService.show(users);
}
4、MultipartFile是用来接收前端二进制文件数据的
前端是formData格式的数据 ‘Content-Type’: ‘multipart/form-data’,
/**
* post方法上传文件,
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export function UPFILE(url, formData) {
return new Promise((resolve, reject) => {
axios({
method: 'post',
url: url,
data: formData,
headers: {
'Content-Type': 'multipart/form-data' //上传文件请求头
}
})
.then(res => {
resolve(res.data);
}).catch(err => {
reject(err)
});
});
}
后端接收文件,使用MultipartFile,其他formData里的数据,使用@RequestParam方法接收就可以。
/**
* 修改个人信息,包括修改头像图片
*
* @param file 头像图片
* @param users 用户信息
* @return
*/
@PostMapping("/selfinfo")
public R<String> modifyWithAvatar(MultipartFile file, Users users) {
log.info("接受的file:{}", users);
try {
if (file != null) {
String url = "imgs/avatar/"; //指定保存头像的路径
String filename = users.getId() + ".jpg"; //用帐号名作为头像名称
String avatar = TjFileUtils.handleUpFileRelativePath(file, url, filename);
log.info("保存的路径:{}",avatar);
users.setAvatar(avatar);
}
if (usersService.updateById(users)) {
return R.success("修改成功");
}
return R.error("修改失败");
} catch (IOException e) {
return R.error(e.getMessage());
}
}