9

Feign と Eureka を使用して、サーバー A からサーバー B に投稿要求を転送しようとしています。両方のサーバーが Eureka によって正常に検出されました。

これは機能します:

@Feignclient
public interface MyFeignClient {
    @RequestMapping(value = "test", = RequestMethod.POST, consumes = "application/json")
    ResponseEntity<String> theActualMethod(
            HttpServletRequest request,
            @RequestHeader("firstHeader") String header1,
            @RequestHeader("secondHeader") byte[] header2);
}

ただし、POST リクエストの内容を読み取るために 2 番目の引数を @RequestBody に変更すると、例外が発生します。

java.lang.IllegalStateException: Method has too many Body parameters: public abstract org.springframework.http.ResponseEntity MyFeignClient.theActualMethod(javax.servlet.http.HttpServletRequest,java.lang.String,byte[])
4

2 に答える 2

9

問題は、Feign インターフェイスのメソッドが複数の「一般」引数を持つことができないことでした。ヘッダー引数は必要な数だけ持つことができますが、本体としては 1 つまでです。@RequestBody は何もしないため、ヘッダーではなく、HttpServletRequest リクエスト変数とは別の変数と見なされます。

そのため、ビジネス ロジックを変更して、パラメーターを 1 つだけにする必要がありました。

于 2016-02-08T10:13:25.193 に答える