如何用原生feign简化http的调用
1 最大的坑先记录一下
利用feign发post请求,参数放在请求体中
package com.example.demo.controller; import com.example.demo.bean.User; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/user") public class UserAction { @RequestMapping("/list") public Object list(){ return "sdfsdfsdfsdf"; } @RequestMapping("/add") public Object add(@RequestBody User user){ return "sdfsdfsdfsdf"; } @RequestMapping("/query") public Object query(@RequestParam String name){ System.out.println(name); return "query"; } }
package com.example.demo.feign; import com.example.demo.bean.User; import feign.*; import java.util.Map; public interface Invorker { @RequestLine(value = "POST /user/add") @Headers("Content-Type: application/json") public Object add(User user); @RequestLine("GET /user/list") public Object list(); @RequestLine("GET /user/query") public Object query(@QueryMap Map map); }
package com.example.demo.controller; import com.example.demo.bean.User; import com.example.demo.feign.Invorker; import feign.Feign; import feign.gson.GsonDecoder; import feign.gson.GsonEncoder; import java.util.HashMap; import java.util.Map; public class TestAction { public static void main(String[] args){ Invorker invorker = Feign.builder() .encoder(new GsonEncoder()) .decoder(new GsonDecoder()) .target(Invorker.class, "http://localhost:8080"); User u = new User("dfsdfsf","hzz",30); Object o = invorker.list(); Object o2 = invorker.add(u); Map m = new HashMap(); m.put("name","sdfsdf"); Object o3 = invorker.query(m); System.out.println(o2); System.out.println(o); System.out.println(o3); // } }