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*/@PostMappingpublic 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());}}
