SpringCloud 에서 Fegin 을 사용 하여 HTTP 인터페이스 호출
4525 단어 springcloudspringboothttp
Fegin 은 성명 식,모듈 화 된 Http 클 라 이언 트 로 HTTP 인 터 페 이 스 를 빠 르 고 우아 하 게 호출 할 수 있 습 니 다.SpringCloud 에서 Feign 클 라 이언 트 를 편리 하 게 만 들 수 있 습 니 다.인 터 페 이 스 를 설명 하고 해당 하 는 주 해 를 추가 하면 HTTP 인터페이스 호출 을 완성 할 수 있 습 니 다.
본 고 는 등록 센터 를 통합 하지 않 아 도 Fegin 의 부하 균형 을 사용 하지 않 기 때문에 더욱 간편 하고 재 활용 가능 한 Http 클 라 이언 트 로 이해 할 수 있 습 니 다.
예 를 들 어 설명 하 다.
SpringBoot 버 전:2.1.1.RELEASE
SpringCloud 버 전:Finchley.SR2
필요 POM 도입
org.springframework.boot
spring-boot-starter-parent
2.1.1.RELEASE
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-starter-web
Fegin 클 라 이언 트 정의
1、@FeignClient Http , , Spring
url: http url、 config: fegin
2、@PostMapping @RequestMapping , Post , ,
http , url , ContentType
3、http , 。
package com.external.feign;
import java.util.List;
import java.util.Map;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import com.external.config.FormFeignConfig;
import com.external.dto.response.BaseBispDto;
import com.external.dto.response.NiftyRes;
import com.external.dto.response.ReportAnalyzesRes;
import com.external.dto.response.ReportSummaryRes;
import com.external.feign.rpc.BISPResponse;
@FeignClient(name="fegin-name", url="${http-url}" , configuration = FormFeignConfig.class)
public interface BispClient {
/**
* @Description
* @author zengzp
*/
@PostMapping(value="/intf?method=XXXX", consumes = {"application/x-www-form-urlencoded"})
public XXXXResponse saveSampleInfo(Map params);
/**
* @Description
* @author zengzp
*/
@PostMapping(value="/intf?method=XXXX", consumes = {"application/x-www-form-urlencoded"})
public XXXXResponse getNiftyDetectionResultReplenish(Map params);
Fegin 설정 코드
로그 출력 정책 과 ContentType 에 대응 하 는 메시지 의 인 코딩 과 디 코딩 을 설정 합 니 다.
package com.external.config;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.cloud.openfeign.support.SpringDecoder;
import org.springframework.cloud.openfeign.support.SpringEncoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import feign.Logger;
import feign.codec.Decoder;
import feign.codec.Encoder;
import feign.form.FormEncoder;
@Configuration
public class FormFeignConfig {
@Autowired
private ObjectFactory messageConverters;
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.BASIC;
}
@Bean
@Scope("prototype")
Decoder decoder() {
return new AllinpayDecoder(new SpringDecoder(messageConverters));
}
@Bean
@Scope("prototype")
Encoder encoder(){
return new FormEncoder(new SpringEncoder(this.messageConverters));
}
}
통합 응답 DTO
package com.external.feign.rpc;
import org.springframework.http.HttpStatus;
import com.external.common.dto.BaseDto;
public class XXXXResponse extends BaseDto {
/**
*
*/
private static final long serialVersionUID = 1L;
private String code;
private String msg;
private Long total;
private T rows;
}
서 비 스 를 시작 할 때 설정 클래스 에@EnableFeignClient 를 추가 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Cloud에서 Feign에 대한 일반적인 질문 요약1. FeignClient 인터페이스, @GettingMapping 같은 조합 메모는 사용할 수 없음 코드 예: 이쪽 @RequestMapping(value = "/simple/{id}", method = Reque...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.