SpringCloud-Feign[请求参数处理]

2019-06-14 10:16:58 浏览数 (2)

在上篇文章的基础上我们来介绍下Feign的请求参数的问题

Feign参数处理

一、单个参数

  首先来看下单个参数的情况

1.service服务

  在service服务中我们增加一个接收单个参数的方法

代码语言:javascript复制
@RequestMapping("/product")
public interface ProductService {

    /**
     * 查询所有商品的方法
     * @return
     */
    @GetMapping("/findAll")
    public List<Product> findAll();

    /**
     *  根据id查询商品信息
     *  Feign本身也是基于http请求的客户端
     *  在接收参数时我们需要通过@RequestParam注解来指明要接收的参数
     * @param id
     * @return
     */
    @GetMapping("/getProductById")
    public Product getProductById(@RequestParam("id") Integer id);
}

注意:记得重新打包更新

2.provider服务

  因为service服务的定义修改了,所以我们需要增加provider的服务,

代码语言:javascript复制
/**
 * @program: springcloud-feign-product-provider
 * @description: 服务提供者的控制器
 * @author: 波波烤鸭
 * @create: 2019-06-07 09:44
 */
@RestController
public class ProductController implements ProductService{


    /**
     * 此处不用再添加@RequestMapping注解,重写的方法在接口中定义的有
     * @return
     */
    @Override
    public List<Product> findAll() {
        List<Product> list = new ArrayList<>();
        list.add(new Product(1, "电视"));
        list.add(new Product(2, "电脑"));
        list.add(new Product(3, "冰箱"));
        list.add(new Product(4, "洗衣机"));
        return list;
    }

    /**
     * 单个参数的处理
     * @param s
     * @return
     */
    @Override
    public Product getProductById(Integer id) {

        return new Product(id,"bobo烤鸭-feign");
    }
}

3.consumer服务

  消费者中直接通过feign调用服务即可。

代码语言:javascript复制
/**
 * @program: springcloud-feign-prodcut-consumer
 * @description: 消费者提供服务
 * @author: 波波烤鸭
 * @create: 2019-06-07 10:47
 */
@RestController
public class ProductController {

    @Autowired
    ProductConsumerService consumerService;
    /**
     * Consumer 中的查询所有商品的方法
     * @return
     */
    @RequestMapping(value="/list",method= RequestMethod.GET)
    public List<Product> getAll(){
        return this.consumerService.findAll();
    }

    @RequestMapping(value="/get",method= RequestMethod.GET)
    public Product getProductById(@RequestParam("id") Integer id){
        return this.consumerService.getProductById(id);
    }
}

启动服务访问:

调用成功!

二、多个参数

1.GET方式

service服务

代码语言:javascript复制
    /**
     * GET方式
     *     获取多个参数
     *     注意:GET方式 形参必须多个分开
     * @param id
     * @param name
     * @return
     */
    @GetMapping("/addProductGet")
    public Product addProductGet(@RequestParam("id") Integer id,@RequestParam("name") String name);

provider服务

代码语言:javascript复制
@Override
public Product addProductGet(Integer id, String name) {
    return new Product(id,name);
}

consumer服务

代码语言:javascript复制
 @RequestMapping(value="/get1",method= RequestMethod.GET)
 public Product addProductGet(Product product){
     return this.consumerService.addProductGet(product.getId(),product.getName());
 }

2.POST方式

service服务

代码语言:javascript复制
/**
 *  Post方式
 *     获取多个参数:@RequestBody
 * @param product
 * @return
 */
@PostMapping("/addProductPost")
public Product addProductPost(@RequestBody  Product product);

provider服务

代码语言:javascript复制
@Override
public Product addProductPost(@RequestBody  Product product) {
    return product;
}

consumer服务

代码语言:javascript复制
@RequestMapping(value="/get2",method= RequestMethod.GET)
 public Product addProductPost(Product product){
     return this.consumerService.addProductPost(product);
 }

搞定~

0 人点赞