2017-04-24 6 views
1

와 클라이언트를 척하기 나는 봄 클라우드 넷플 릭스를 사용하고 있지 않다이바디 매개 변수는 형식 매개 변수와 함께 사용할 수 없습니다 - 헤더 및 JSON 데이터

@RequestLine("POST /enroll") 
@Headers({ "header1: {header1}", "header2: {header2}", "Content-Type: application/json" }) 
ResponseDto enroll(@Param("header1") String header1,@Param("header1") String header1, RequestDto requestDto)throws MyCustomException; 

` 같은 FeignClient 있습니다. 그러나 나는 아래 예외를 계속 얻고있다.

Caused by: java.lang.IllegalStateException: Body parameters cannot be used with form parameters. 
at feign.Util.checkState(Util.java:128) 
at feign.Contract$BaseContract.parseAndValidateMetadata(Contract.java:112) 
at feign.Contract$BaseContract.parseAndValidatateMetadata(Contract.java:64) 
at feign.ReflectiveFeign$ParseHandlersByName.apply(ReflectiveFeign.java:146) 
at feign.ReflectiveFeign.newInstance(ReflectiveFeign.java:53) 
at feign.Feign$Builder.target(Feign.java:209) 
at feign.Feign$Builder.target(Feign.java:205) 

나는 이와 같이 내 클라이언트를 인스턴스화합니다.

return Feign.builder() 
     .encoder(new JacksonEncoder()) 
     .decoder(new JacksonDecoder()) 
     .logger(new Slf4jLogger()) 
     .logLevel(Logger.Level.FULL) 
     .target(RegularFeignClient.class, url); 

답변

3

와우, 이것은 까다 롭습니다. 매개 변수의 순서가 중요합니다.

@RequestLine("POST /enroll") 
@Headers({ "header1: {header1}", "header2: {header2}", "Content-Type: application/json" }) 
ResponseDto enroll(RequestDto requestDto, @Param("header1") String header1,@Param("header1") String header1)throws MyCustomException; 

고위 개발자에게 감사드립니다. 그는 그것을 발견했다.