Feign服务调用,Get、Post请求

GET 请求

Feign客户端

@FeignClient("lik-dr-product")
public interface ProductFeign {

	/**
     * 从请求路径获取值,需要使用@PathVariable注解
     */
    @GetMapping("/product/findById/{id}")
    Product findById(@PathVariable("id") Long id);

	/**
     * 从请求参数中获取值,需要使用@RequestParam注解,可以不用在注解中指定值
     * 注意点:Feign方法中的参数名必须跟对应的服务端方法参数名一致
     */
    @GetMapping("/product/findProduct")
    R findProduct(@RequestParam String name, @RequestParam String code);

	/**
     * 对象作为参数时需要加上@SpringQueryMap注解
     */
    @GetMapping("/product/findProduct2")
    R findProduct2(@SpringQueryMap ProductDTO productDTO);

	/**
     * 使用Map作为参数,必须加上@RequestParam注解或者@SpringQueryMap注解
     */
	@GetMapping("/product/findProduct3")
    R findProduct3(@RequestParam Map<String, Object> map);
}

服务端控制器

@Slf4j
@RestController
@RequestMapping("/product")
public class ProductController {

	@Autowired
    private IProductService productService;

	/**
     * 从请求路径获取值,需要使用@PathVariable注解
     */
    @GetMapping("/findById/{id}")
    public Product findById(@PathVariable("id") Long id) {
        Product product = productService.getById(id);
        return product;
    }
    
    /**
     * 从请求参数中获取值
     * 注意点:如果参数名跟Feign方法中的参数名不一致的话,需要用@RequestParam注解指定Feign中的参数名,如果一致可以省略@RequestParam注解
     */
	@GetMapping("/findProduct")
    public R findProduct(@RequestParam("name") String name1, String code) {
        String msg = "name1=" + name1 + " code=" + code;
        log.info(msg);
        return R.ok().data(msg);
    }

	/**
	 * 使用对象作为参数
	 */
	@GetMapping("/findProduct2")
    public R findProduct2(ProductDTO productDTO) {
        log.info(productDTO.toString());
        return R.ok().data(productDTO.toString());
    }

	/**
	 * 使用Map作为参数,必须加上@RequestParam注解
	 */
	@GetMapping("/findProduct3")
    public R findProduct3(@RequestParam Map<String, Object> map) {
        String msg = JSONUtil.toJsonStr(map);
        log.info(msg);
        return R.ok().data(map);
    }
}

POST请求

Feign客户端

@FeignClient("lik-dr-product")
public interface ProductFeign {

	/**
	 * 对象参数需要加上@RequestBody注解
	 */
	@PostMapping("/product/findProduct4")
    R findProduct4(@RequestBody ProductDTO productDTO);
    
}

服务端控制器

@Slf4j
@RestController
@RequestMapping("/product")
public class ProductController {
	
	/**
	 * Post请求对象参数需要加上@RequestBody注解
	 */
	@PostMapping("/findProduct4")
    public R findProduct4(@RequestBody ProductDTO productDTO) {
        log.info(productDTO.toString());
        return R.ok().data(productDTO.toString());
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值