springboot feign 접근 api 사용 하기

12048 단어 springboot
본 고 는 주로 springboot 프로젝트 에서 feign 을 사용 하여 cnode 중국어 공공 api 인 터 페 이 스 를 방문 하 는 방법 을 소개 합 니 다.
fein
Feign 은 자바 HTTP 클 라 이언 트 의 작성 을 더욱 편리 하 게 합 니 다.Feign 영감 은 Retrofit,JAXRS-2.0,WebSocket 에서 나온다.Feign 은 처음에 통일 묶음 을 낮 추기 위해 서 였 어 요.
Denominator 에서 HTTP API 까지 의 복잡 도 를 정 하고 Restful 지원 여 부 를 구분 하지 않 습 니 다.Feign 은 최소한 의 자원 과 코드 를 통 해 HTTP API 와 의 연결 을 실현 하 는 데 목적 을 둡 니 다.통과 가능
맞 춤 형 디코더 와 오류 처리,임의의 HTTP API 를 작성 할 수 있 습 니 다.
github:https://github.com/OpenFeign/feign
2.feign 사용 절차
1.pom 의존 증가

   io.github.openfeign
   feign-core
   9.5.0


   io.github.openfeign
   feign-slf4j
   9.5.0


   io.github.openfeign
   feign-hystrix
   9.5.0


   io.github.openfeign
   feign-jackson
   9.5.0

2,application.properties 기초 url 증가
application.cnode.url=https://cnodejs.org

3.api 에 접근 하 는 인 터 페 이 스 를 작성 합 니 다.
@Headers("Content-Type:application/json")
public interface NodeClient {
    @RequestLine("GET /api/v1/topics?page={page}&tab={tab}&limit={limit}&mdrender={mdrender}")
    CnodeTopicsResponse getTopics(@Param("page") int page,@Param("tab") String tab,
                                  @Param("limit")int limit,@Param("mdrender") String mdrender);
}

4.주 해 를 사용 하여 NodeClient 를 설정 하고 응답 대기 시간 을 설정 합 니 다.
@Configuration
public class NodeConfig {
    @Value("${application.cnode.url}")
    private String baseUrl;

    @Bean
    NodeClient nodeClient() throws InterruptedException {
        return HystrixFeign.builder()
                .decoder(new JacksonDecoder())
                .encoder(new JacksonEncoder())
                .setterFactory((target, method) ->
                        new SetterFactory.Default().create(target, method).
                                andCommandPropertiesDefaults(HystrixCommandProperties.defaultSetter().
                                        withExecutionTimeoutInMilliseconds(10000)))
                .target(NodeClient.class, this.baseUrl);
    }
}

5.컨트롤 러 설정
@RestController
@CrossOrigin
public class NodeController {
    private NodeClient nodeClient;
    @Autowired
    public NodeController(final NodeClient nodeClient) {
        this.nodeClient = nodeClient;
    }

    @RequestMapping(value = "/node",method = RequestMethod.GET)
    public CnodeTopicsResponse get(CnodeTopicsRequest cnodeTopicsRequest){
        return nodeClient.getTopics(cnodeTopicsRequest.getPage(),
                cnodeTopicsRequest.getTab(),
                cnodeTopicsRequest.getLimit(),
                cnodeTopicsRequest.getMdrender());
    }

}

6.그 중에서 Cnode Topics Request 와 Cnode Topics Response 는 다음 과 같다.
public class CnodeTopicsRequest {
    private Integer page;
    private String tab;
    private Integer limit;
    private String mdrender;

    public Integer getPage() {
        return page;
    }

    public void setPage(Integer page) {
        this.page = page;
    }

    public Integer getLimit() {
        return limit;
    }

    public void setLimit(Integer limit) {
        this.limit = limit;
    }

    public String getTab() {
        return tab;
    }

    public void setTab(String tab) {
        this.tab = tab;
    }


    public String getMdrender() {
        return mdrender;
    }

    public void setMdrender(String mdrender) {
        this.mdrender = mdrender;
    }
}
public class CnodeTopicsResponse {
    private boolean success;
    private List data;

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public List getData() {
        return data;
    }

    public void setData(List data) {
        this.data = data;
    }
}

6.그리고 응용 프로그램 을 시작 하고 링크 에 접근 합 니 다.
http://localhost:8080/node?page=1&limit=100&tab=&mdrender=false

좋은 웹페이지 즐겨찾기