SpringCloud Feign 전송 대상 파라미터 호출 실패 문제 해결

SpringCloud Feign 전송 대상 파라미터 호출 실패
GET 요청 방식 은 지원 되 지 않 습 니 다
  • Feign 원생 httpclient 를 Apache HttpClient 로 교체 합 니 다
  • @RequestBody 수신 json 파라미터bootstrap-local.yml
    
    feign:
      httpclient:
        enabled: true
    pom.xml
    
    <!--   Apache HttpClient  Feign  httpclient -->
    <dependency>
        <groupId>com.netflix.feign</groupId>
        <artifactId>feign-httpclient</artifactId>
        <version>8.18.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.3</version>
    </dependency>
    feignClient:
    
    @FeignClient(name = "hd-ucenter-server", fallback = SysTestServerFallbackImpl.class)
    public interface SysTestServer { 
        @RequestMapping(value = "/test/test", method = RequestMethod.POST, consumes = "application/json")
        Object test(CurrentUser currentUser);
    }
    RestController:
    
    @RestController
    @PostMapping("/test")
    public class TestController {
     
        @RequestMapping(value = "/test")
        public Object test(@RequestBody CurrentUser currentUser) {
            System.out.printf("  test
    "); return currentUser; } }
    질문
    클 라 우 드 내부 에서 이상 을 던 져 처리 하지 않 기 때문에 Feign 은 spring 기본 포장 이상 결 과 를 다음 과 같이 가 져 옵 니 다.
    {
    "timestamp": "2017-12-27 15:01:53",
    "status": 500,
    "error": "Internal Server Error",
    "exception": "com.keruyun.loyalty.commons.master.exception.BusinessException",
    "message": "Request processing failed; nested exception is {\"code\":1000, \"message\":\"test Exception\"}",
    "path": "/coupon/cloud/commercial/8469"
    }
    사용자 정의 이상 처리 에서 상태 되 돌리 기
    
    @Slf4j
    @RestControllerAdvice
    public class GlobalExceptionHandlerResolver {
     
        //        
        @ExceptionHandler(InternalApiException.class)
        public ResultResp<?> handleGlobalException(HttpServletResponse response, InternalApiException internalApiException) {
            ResultResp<?> resultResp = internalApiException.getResultResp();
            log.error(internalApiException.getMessage(), internalApiException);
            response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());//  500  
            response.setContentType(MediaType.APPLICATION_JSON_UTF8.toString());
            return resultResp;
        }
    }
    이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

    좋은 웹페이지 즐겨찾기