emazzotta:
私は(Javaで)私のMicronautファイルアップロードコントローラのため、以下の署名を持っています:
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("application/json")
@Post
public Single<IdType> uploadFile(Publisher<CompletedFileUpload> files)
そして、私は(Groovyで)、次の作業スポックのテストを持っています:
@MicronautTest
class UploadSpecification extends Specification implements CsvFileBuilder {
@Inject
@Client('/')
HttpClient client
@Shared
List<String> allowedMimeTypes = List.of("text/csv", "application/vnd.ms-excel")
@Unroll
void "upload mailings csv with content type #mediaType"() {
given:
MultipartBody multipartBody = MultipartBody
.builder()
.addPart("files", "myfile.csv", new MediaType(mediaType), createCsvAsBytes(buildCsv()))
.build()
when:
HttpResponse response = client.toBlocking()
.exchange(POST("/v1/mailings", multipartBody).contentType(MediaType.MULTIPART_FORM_DATA_TYPE))
then:
response.status == HttpStatus.OK
where:
mediaType << allowedMimeTypes
}
}
私がテストについて変更したいことは次のとおりです。代わりに標準を使用してのHttpClient
テストの上部に注入されたとして、私はこのようなものを使用したいと思います:
@Inject
UploadClient uploadClient
@Client(value = "/v1/mailings")
static interface UploadClient {
@Post
HttpResponse postFile(...)
}
私の質問は何をするか、署名、あるpostFile
クライアントのニーズのか?私はまだ使用することができますMultipartBody
が、何とかそれを変換しますかCompletedFileUpload
?私は本当にこの問題を解決する方法がわからないんだけど、それがに来るとき、私は初心者ですRxJava
。
すべてのヘルプは大歓迎です。
Puneet Behl:
以下試してください。
@Client(value ="/v1/upload")
static interface UploadClient {
@Post(uri = "/mailings", produces = MediaType.MULTIPART_FORM_DATA)
HttpResponse postFile(@Body MultipartBody file)
}
[追加]を生成し、身体の注釈