类 MultipartBodyBuilder

java.lang.Object
cn.taketoday.http.client.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.

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)
 
从以下版本开始:
4.0 2021/11/5 23:00
作者:
Arjen Poutsma, Rossen Stoyanchev, Sam Brannen, Harry Yang
另请参阅:
  • 字段详细资料

  • 构造器详细资料

    • MultipartBodyBuilder

      public 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
    • part

      public MultipartBodyBuilder.PartBuilder part(String name, Object part, @Nullable MediaType contentType)
      Variant of part(String, Object) that also accepts a MediaType.
      参数:
      name - the name of the part to add
      part - the part data
      contentType - the media type to help with encoding the part
      返回:
      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
    • asyncPart

      public <T, P extends org.reactivestreams.Publisher<T>> MultipartBodyBuilder.PartBuilder asyncPart(String name, P publisher, cn.taketoday.core.ParameterizedTypeReference<T> typeReference)
      Variant of asyncPart(String, Publisher, Class) with a ParameterizedTypeReference for the element type information.
      参数:
      name - the name of the part to add
      publisher - the part contents
      typeReference - the type of elements contained in the publisher
      返回:
      builder that allows for further customization of part headers
    • build

      public cn.taketoday.util.MultiValueMap<String,HttpEntity<?>> build()
      Return a MultiValueMap with the configured parts.