类 MultipartBodyBuilder


  • public final class MultipartBodyBuilder
    extends Object
    Prepare the body of a multipart request, resulting in a MultiValueMap<String, HttpEntity>. Parts may be concrete values or via asynchronous types such as Reactor Mono, Flux, and others registered in the ReactiveAdapterRegistry.

    This builder is intended for use with the reactive WebClient. For multipart requests with the RestTemplate, simply create and populate a MultiValueMap<String, HttpEntity> as shown in the Javadoc for FormHttpMessageConverter and in the reference docs.

    Below are examples of using this builder:

    
     // Add form field
     MultipartBodyBuilder builder = new MultipartBodyBuilder();
     builder.part("form field", "form value").header("foo", "bar");
    
     // Add file part
     Resource image = new ClassPathResource("image.jpg");
     builder.part("image", image).header("foo", "bar");
    
     // Add content (e.g. JSON)
     Account account = ...
     builder.part("account", account).header("foo", "bar");
    
     // Add content from Publisher
     Mono<Account> accountMono = ...
     builder.asyncPart("account", accountMono).header("foo", "bar");
    
     // Build and use
     MultiValueMap<String, HttpEntity<?>> multipartBody = builder.build();
    
     Mono<Void> result = webClient.post()
         .uri("...")
         .body(multipartBody)
         .retrieve()
         .bodyToMono(Void.class)
     
    从以下版本开始:
    5.0.2
    作者:
    Arjen Poutsma, Rossen Stoyanchev
    另请参阅:
    RFC 7578
    • 构造器详细资料

      • MultipartBodyBuilder

        public MultipartBodyBuilder()
        Creates a new, empty instance of the MultipartBodyBuilder.
    • 方法详细资料

      • part

        public MultipartBodyBuilder.PartBuilder part​(String name,
                                                     Object part)
        Add a part where the Object may be:
        • String -- form field
        • Resource -- file part
        • Object -- content to be encoded (e.g. to JSON)
        • HttpEntity -- part content and headers although generally it's easier to add headers through the returned builder
        • Part -- a part from a server request
        参数:
        name - the name of the part to add
        part - the part data
        返回:
        builder that allows for further customization of part headers
      • asyncPart

        public <T,​P extends org.reactivestreams.Publisher<T>> MultipartBodyBuilder.PartBuilder asyncPart​(String name,
                                                                                                               P publisher,
                                                                                                               Class<T> elementClass)
        Add a part from Publisher content.
        参数:
        name - the name of the part to add
        publisher - a Publisher of content for the part
        elementClass - the type of elements contained in the publisher
        返回:
        builder that allows for further customization of part headers