传递单个参数:
单个参数的传值有两种方式,第一种
使用@RequestParam/@PathVariable进行传值
客户端feign调用接口(@RequestParam)
@RequestMapping("/ct/selectOne")Customer selectOne(@RequestParam("id") Integer id);
服务提供端
@RequestMapping("selectOne")public Customer selectOne(Integer id) {return this.customerService.queryById(id);}
客户端feign调用接口(@PathVariable)
@GetMapping("/admin/selectOne/{id}")String selectOne(@PathVariable("id") Integer id);
服务提供端
@RequestMapping("selectOne/{id}")@HystrixCommand(fallbackMethod = "HystrixqueryById")public Admin selectOne(@PathVariable("id") Integer id) {Admin bean = adminService.queryById(id);if(bean == null){throw new RuntimeException("id:"+id+"没有找到该id的用户");}return bean;}
注意:
1、在使用@RequestParam/@PathVariable进行传值时,一定要注意,需要绑定参数,如@RequestParam(“id”)绑定id,不然会报错
2、@PathVariable是获取url上数据的,@RequestParam获取请求参数的(包括post表单提交)
传递多个参数:
多个参数的传值可以使用多个@RequestParam来进行传参
客户端feign调用接口
@RequestMapping("/ct/upload")Customer upload(@RequestParam("newFileName") String newFileName,@RequestParam("id") int id);
服务提供端
@RequestMapping("upload")public Customer upload(String newFileName,int id) throws IOException {System.out.println("进入提供者-图片上传");//设置图片上传路径,是目标文件夹的路径// 保存到数据库Customer customer=customerService.queryById(id);customer.setImage(newFileName);customerService.update(customer);return customer;}
传对象:
传对象有两种方式
第一种,使用@SpringQueryMap注解实现
客户端feign调用接口
@RequestMapping("/ev/insert")Evaluation insert(@SpringQueryMap Evaluation evaluation);
服务提供端
@PostMapping("save")public Object save(@RequestBody Admin admin){boolean result = false;//判断是添加还是编辑if(admin.getId()!=null){//编辑// System.out.println("编辑管理员信息");result = adminService.update(admin)>0;} else {//添加admin.setRegDate(new Date());// System.out.println("添加管理员信息"+admin);result = adminService.insert(admin).getId() != null;}return result;}
重点:多个参数+对象的传值
在进行多个参数+对象传值时,使用@RequestParam来传递普通参数,使用@SpringQueryMap来传递对象
注:
本人亲测踩坑
使用@RequestParam+@RequestBody的时候,出现问题
@RequestBody要求前端页面返回json格式,否则会报:不支持Content-Type:application/json的错误
客户端feign调用接口
@RequestMapping(value = "/admin/queryAll", method = RequestMethod.POST)String queryAll(@RequestParam("page") Integer page,@RequestParam("limit") Integer limit,@SpringQueryMap AdminQuery admin);
服务提供端
@PostMapping("queryAll")public Object queryAll(Integer page, Integer limit,AdminQuery admin) {CommonResult<Admin> result = new CommonResult<>();IPage<Admin> ipage = adminService.queryAllByLimit(page,limit,admin);result.setCode(0);result.setCount(ipage.getTotal());result.setData(ipage.getRecords());return result;}