Interface RequestPreparationSetters

All Superinterfaces:
HttpMessageSetters, PathAndQueryParamSetters
All Known Implementing Classes:
BlockingWebClientRequestPreparation, FutureTransformingRequestPreparation, RestClientPreparation, TransformingRequestPreparation, WebClientRequestPreparation

@UnstableApi public interface RequestPreparationSetters extends PathAndQueryParamSetters, HttpMessageSetters
Provides the setters for building an HttpRequest and RequestOptions.
  • Method Details

    • requestOptions

      RequestPreparationSetters requestOptions(RequestOptions requestOptions)
      Sets the specified RequestOptions that could overwrite the previously configured values such as responseTimeout(Duration), writeTimeout(Duration), maxResponseLength(long) and attr(AttributeKey, Object).
    • responseTimeout

      com.linecorp.armeria.client.RequestOptionsSetters responseTimeout(Duration responseTimeout)
      Schedules the response timeout that is triggered when the Response is not fully received within the specified Duration since the Response started or Request was fully sent. Duration.ZERO disables the limit.
    • responseTimeoutMillis

      com.linecorp.armeria.client.RequestOptionsSetters responseTimeoutMillis(long responseTimeoutMillis)
      Schedules the response timeout that is triggered when the Response is not fully received within the specified responseTimeoutMillis since the Response started or Request was fully sent. 0 disables the limit.
    • writeTimeout

      com.linecorp.armeria.client.RequestOptionsSetters writeTimeout(Duration writeTimeout)
      Sets the amount of time allowed until the initial write attempt of the current Request succeeds. Duration.ZERO disables the limit.
    • writeTimeoutMillis

      com.linecorp.armeria.client.RequestOptionsSetters writeTimeoutMillis(long writeTimeoutMillis)
      Sets the amount of time allowed until the initial write attempt of the current Request succeeds. 0 disables the limit.
    • maxResponseLength

      com.linecorp.armeria.client.RequestOptionsSetters maxResponseLength(long maxResponseLength)
      Sets the maximum allowed length of a server response in bytes. 0 disables the limit.
    • attr

      <V> com.linecorp.armeria.client.RequestOptionsSetters attr(AttributeKey<V> key, @Nullable V value)
      Associates the specified value with the given AttributeKey in this request. If this context previously contained a mapping for the AttributeKey, the old value is replaced by the specified value.
    • exchangeType

      @UnstableApi com.linecorp.armeria.client.RequestOptionsSetters exchangeType(ExchangeType exchangeType)
      Sets the ExchangeType that determines whether to stream an HttpRequest or HttpResponse. Note that an HttpRequest will be aggregated before being written if ExchangeType.UNARY or ExchangeType.RESPONSE_STREAMING is set. If unspecified, the Clients try to infer a proper ExchangeType depending on the content type of a request and a response. Here are examples:

      WebClient

      
       WebClient client = WebClient.of("https://armeria.dev");
      
       try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
           client.prepare()
                 .post("/api/v1/items")
                 .contentJson(new Item(...)) // A non-streaming request type.
                 .asString()                 // A non-streaming response type.
                 .execute();
           assert captor.get().exchangeType() == ExchangeType.UNARY;
       }
      
       try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
           client.get("/api/v1/items")   // A non-streaming request type.
                 .aggregate();           // A return type is not specified; Assuming that response streaming
                                         // is enabled.
           assert captor.get().exchangeType() == ExchangeType.RESPONSE_STREAMING;
       }
      
       try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
           client.prepare()
                 .post("/api/v1/items")
                 .content(MediaType.JSON_LINES, StreamMessage.of(...)) // A streaming request type.
                 .asFile(Path.get("/path/to/destination"))             // A streaming response type.
                 .execute();
           assert captor.get().exchangeType() == ExchangeType.BIDI_STREAMING;
       }
       

      BlockingWebClient

      Since a request and a response of BlockingWebClient are fully aggregated, ExchangeType.UNARY is only supported.

      
       try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
           AggregatedHttpResponse response = client.blocking().get("/api/v1/items");
           assert captor.get().exchangeType() == ExchangeType.UNARY;
       }
       

      gRPC clients

      An ExchangeType is automatically inferred from the io.grpc.MethodDescriptor.MethodType.

      
       try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
           Response response = grpcClient.unaryCall(...);
           assert captor.get().exchangeType() == ExchangeType.UNARY;
       }
       

      Thrift clients

      Thrift protocols do not support streaming. ExchangeType.UNARY is only supported.