Springs Feign Client 機能を使用して、あるマイクロ サービスから別のマイクロ サービスに通信しています。
ここで、呼び出されたサービスは、ファイルと関連する (JSON) オブジェクトを受け入れる REST インターフェイスを公開します。
@RequestMapping(value = {CONVERT_PATH, APPLICATION_PATH + CONVERT_PATH}, method = RequestMethod.POST, produces = CONTENT_TYPE)
public ResponseEntity<InputStreamResource> convert(@RequestPart("file") MultipartFile file, @RequestParam("input") Input in) {...}
このインターフェイスは正常に機能しています。別のソースから有効なマルチパート/混合エンティティを送信して、これを確認しました。
次に、他のサービスで、このインターフェイスを使用するように、一致する偽クライアントをセットアップしました。
@FeignClient("convert")
public interface ConvertClient {
@RequestMapping(value = CONVERT_PATH, method = RequestMethod.POST, consumes = "multipart/mixed")
ResponseEntity<InputStreamResource> convert(@RequestPart("file") MultipartFile file, @RequestPart("input") Input in);
}
繰り返しますが、あるサービスから別のサービスへの接続は機能しています。偽のクライアント (複数の部分を使用しないもの) の別の要求インターフェイスでこれを確認しました。
この特定のインターフェイス メソッドを使用して (クライアント) サービスを構築しようとすると、次の例外が発生します。
FactoryBean threw exception on object creation;
nested exception is java.lang.IllegalStateException: Method has too many Body parameters:
public abstract org.springframework.http.ResponseEntity <..>.feign.ConvertClient.convert(org.springframework.web.multipart.MultipartFile,<..>.Input)
これを機能させるためにできることはありますか?私が述べたようにRESTインターフェースに到達することは可能であり、さまざまな偽の呼び出しが機能しています。私が間違っていなければ、これはうまくいくはずです。Springs Feign は、feign インターフェイスの multipart/mixed をサポートしていないだけですか?