在以往的 HTTP 调用中,调用方式经常将组装代码冗余到正常业务代码中,不够优雅,因此在接触到 Feign 后,考虑使其作为一个 HTTP 发送基础,来进行远程调用。
Feign ,搞定 HTTP 请求以springboot项目为例
1、引入依赖2、HTTP发送端org.springframework.cloud spring-cloud-starter-openfeignio.github.openfeign feign-jackson9.7.0
package com.example.xmldemo.feignService; import com.example.xmldemo.result.Project1369CategoryTreeVo; import com.example.xmldemo.result.ViewProjectReportParam; import feign.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.http.HttpStatus; import java.util.*; public interface OutsideCallService { @RequestLine("GET /api/biz/outside/uploadProjectInfo?zjlx={zjlx}&gnfl={gnfl}&jzmj={jzmj}&filePath={filePath}&fileId={fileId}") Result3、测试uploadProjectInfo(@Param("zjlx") String zjlx, @Param("gnfl") String gnfl, @Param("jzmj") Double jzmj, @Param("filePath") String filePath, @Param("fileId") String fileId); @RequestLine("GET /api/biz/outside/tree") Result > tree(); @RequestLine("POST /api/biz/outside/post") @Headers({"Content-Type: application/json"}) Result
postBook2(ViewProjectReportParam bookVo); @Data @AllArgsConstructor @NoArgsConstructor class Result { // HTTP Response Status Code private HttpStatus httpStatus; private Integer status; // General Error message private String message; private Integer code; // Error code private String serviceStatus; private Date timestamp = new Date(); private T data; private T extendData; } }
package com.example.xmldemo; import com.example.xmldemo.feignService.OutsideCallService; import com.example.xmldemo.result.Project1369CategoryTreeVo; import com.example.xmldemo.result.ViewProjectReportParam; import feign.Feign; import feign.jackson.JacksonDecoder; import feign.jackson.JacksonEncoder; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import java.util.List; public class FeignTest { @Test public void test1(){ OutsideCallService target = Feign.builder() .decoder(new JacksonDecoder()) .encoder(new JacksonEncoder()) .target(OutsideCallService.class, "http://localhost:8889"); OutsideCallService.Resulttree = target.uploadProjectInfo("002008001","001001001001002",122d,"http://localhost:8987/download","22222"); Long data = tree.getData(); System.out.println(data); } @Test public void test2(){ OutsideCallService target = Feign.builder() .decoder(new JacksonDecoder()) .encoder(new JacksonEncoder()) .target(OutsideCallService.class, "http://localhost:8889"); OutsideCallService.Result > tree = target.tree(); List
children = tree.getData(); System.out.println(children); } @Test public void test3(){ OutsideCallService target = Feign.builder() .decoder(new JacksonDecoder()) .encoder(new JacksonEncoder()) .target(OutsideCallService.class, "http://localhost:8889"); ViewProjectReportParam viewProjectReportParam = new ViewProjectReportParam(); viewProjectReportParam.setProjectId(23233L); viewProjectReportParam.setType(232); OutsideCallService.Result tree = target.postBook2(viewProjectReportParam); ViewProjectReportParam data = tree.getData(); System.out.println(data); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)