メインの Spring Boot アプリケーションと通信することを目的とした Quarkus マイクロサービスを作成しています。
Spring Boot アプリを呼び出すために、このQuarkus チュートリアルに基づいて REST クライアントを作成しましたが、一部のエンドポイントでは正常に動作しています。この問題は、Quarkus から Spring ブートにファイルをアップロードしようとすると発生し、正常に動作しません。この他のチュートリアルに従って、マルチパート リクエストを操作しました。
Quarkus アプリケーションのマルチパート オブジェクトは次のとおりです。
public class MultipartBody {
@FormParam("file")
@PartType(MediaType.APPLICATION_OCTET_STREAM)
public InputStream file;
@FormParam("fileName")
@PartType(MediaType.TEXT_PLAIN)
public String fileName;
}
Quarkus の REST クライアントのエンドポイントは次のとおりです。
@POST
@Path("/file")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
ProjectFile upload(@HeaderParam(AUTH_HEADER) String apiToken, @MultipartForm MultipartBody data);
MultipartBody オブジェクトを作成する方法は次のとおりです。
InputStream stream = IOUtils.toInputStream(contentString, Charset.defaultCharset());
MultipartBody data = MultipartBody.builder()
.file(stream)
.fileName(filename)
.build();
Spring Boot アプリケーションのエンドポイント:
@PostMapping("/file")
public ProjectFile receive(@RequestParam MultipartFile inputFile)
inputFile
提供されていないというエラーがスローされます。
Required request part 'inputFile' is not present - org.springframework.web.multipart.support.MissingServletRequestPartException - Required request part 'inputFile' is not present
@RequestParam
forを変更すると@RequestBody
、inputFile
パラメータは常にになりますnull
。私は何が欠けていますか?