pom依赖
<!-- feign调用依赖 --><dependency><groupId>com.netflix.feign</groupId><artifactId>feign-core</artifactId><version>8.18.0</version></dependency><dependency><groupId>com.netflix.feign</groupId><artifactId>feign-jackson</artifactId><version>8.18.0</version></dependency>
feign接口
import com.tuling.common.utils.R;import com.feigndemo.vo.OrderVo;import feign.Headers;import feign.Param;import feign.RequestLine;import org.springframework.web.bind.annotation.RequestBody;public interface RemoteService {@Headers({"Content-Type: application/json","Accept: application/json"})@RequestLine("GET /order/findOrderByUserId/{userId}") //feign自带的注解R findOrderByUserId(@Param("userId") Integer userId);/*** 对象名字不一定需要一样* 参数在request对象中,然后会帮我们解析,封装到对象里面,所以对象名字不需要一样,里面的字段一样就行了.* "Accept: application/json" //指定当前接口接收的json格式的数据*/@Headers({"Content-Type: application/json","Accept: application/json"})@RequestLine("POST /order/save")public R save(@RequestBody OrderVo order);}
原生feignAPI调用
import com.feigndemo.vo.OrderVo;import feign.Feign;import feign.Request;import feign.jackson.JacksonDecoder;import feign.jackson.JacksonEncoder;public class FeignDemo {public static void main(String[] args) {//基于jsonRemoteService service = Feign.builder().encoder(new JacksonEncoder()) // 编码方式.decoder(new JacksonDecoder()) // 解码方式.options(new Request.Options(1000, 3500))//设置超时时间//.retryer(new Retryer.Default(5000, 5000, 3)).target(RemoteService.class, //代理对象"http://localhost:8020/"); //目标地址int userId = 4;OrderVo vo = new OrderVo();vo.setCommodityCode("C000003");vo.setUserId(userId);vo.setCount(5);vo.setAmount(200);// 保存操作System.out.println(service.save(vo));System.out.println(service.findOrderByUserId(userId)); //查询操作}}
结果:
{msg=success, code=0}
{msg=success, code=0, orders=[{id=5, userId=4, commodityCode=C000003, count=5, amount=200}, {id=6, userId=4, commodityCode=C000003, count=5, amount=200}]}
代码地址
https://gitee.com/zjj19941/ZJJ_Neaten5.10/tree/master/ZJJ_Feign/protogenesis-feign
