/*
* Copyright (c) 2011-2018 Contributors to the Eclipse Foundation
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
* which is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
*/
package io.vertx.ext.web.client;
import io.vertx.codegen.annotations.Fluent;
import io.vertx.ext.web.client.impl.WebClientSessionAware;
import io.vertx.ext.web.client.spi.CookieStore;
An asynchronous sessions aware HTTP / HTTP/2 client called WebClientSession
. This client wraps a WebClient
and makes it session aware adding features to it:
- Per client headers, to be send with every request
- Per client cookies, to be send with every request
- Automatic storage and sending of cookies received from the server(s)
The client honors the cookies attributes:
- domain
- path
- secure
- max-age and expires
Author: Tommaso Nolli
/**
* An asynchronous sessions aware HTTP / HTTP/2 client called {@code WebClientSession}.
* <p>
* This client wraps a {@link WebClient} and makes it session aware adding features to it:
* <ul>
* <li>Per client headers, to be send with every request</li>
* <li>Per client cookies, to be send with every request</li>
* <li>Automatic storage and sending of cookies received from the server(s)</li>
* </ul>
* <p>
* The client honors the cookies attributes:
* <ul>
* <li>domain</li>
* <li>path</li>
* <li>secure</li>
* <li>max-age and expires</li>
* </ul>
* <p/>
*
* @author <a href="mailto:tommaso.nolli@gmail.com">Tommaso Nolli</a>
*/
public interface WebClientSession extends WebClient {
Create a session aware web client using the provided webClient
instance. Params: - webClient – the web client instance
Returns: the created client
/**
* Create a session aware web client using the provided {@code webClient} instance.
*
* @param webClient the web client instance
* @return the created client
*/
static WebClientSession create(WebClient webClient) {
return create(webClient, CookieStore.build());
}
Create a session aware web client using the provided webClient
instance. Params: - webClient – the web client instance
Returns: the created client
/**
* Create a session aware web client using the provided {@code webClient} instance.
*
* @param webClient the web client instance
* @return the created client
*/
static WebClientSession create(WebClient webClient, CookieStore cookieStore) {
return new WebClientSessionAware(webClient, cookieStore);
}
Configure the client to add an HTTP header to every request.
Params: - name – the header name
- value – the header value
Returns: a reference to this, so the API can be used fluently
/**
* Configure the client to add an HTTP header to every request.
*
* @param name the header name
* @param value the header value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
WebClientSession addHeader(CharSequence name, CharSequence value);
Configure the client to add an HTTP header to every request.
Params: - name – the header name
- value – the header value
Returns: a reference to this, so the API can be used fluently
/**
* Configure the client to add an HTTP header to every request.
*
* @param name the header name
* @param value the header value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
WebClientSession addHeader(String name, String value);
Configure the client to add an HTTP header to every request.
Params: - name – the header name
- values – the header value
Returns: a reference to this, so the API can be used fluently
/**
* Configure the client to add an HTTP header to every request.
*
* @param name the header name
* @param values the header value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
WebClientSession addHeader(CharSequence name, Iterable<CharSequence> values);
Configure the client to add an HTTP header to every request.
Params: - name – the header name
- values – the header value
Returns: a reference to this, so the API can be used fluently
/**
* Configure the client to add an HTTP header to every request.
*
* @param name the header name
* @param values the header value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
WebClientSession addHeader(String name, Iterable<String> values);
Removes a previously added header.
Params: - name – the header name
Returns: a reference to this, so the API can be used fluently
/**
* Removes a previously added header.
*
* @param name the header name
* @return a reference to this, so the API can be used fluently
*/
@Fluent
WebClientSession removeHeader(CharSequence name);
Removes a previously added header.
Params: - name – the header name
Returns: a reference to this, so the API can be used fluently
/**
* Removes a previously added header.
*
* @param name the header name
* @return a reference to this, so the API can be used fluently
*/
@Fluent
WebClientSession removeHeader(String name);
Returns this client's CookieStore
All cookies added to this store will be send with every request.
The CookieStore honors the domain, path, secure and max-age properties of received cookies
and is automatically updated with cookies present in responses received by this client.
Returns: this client's cookie store
/**
* Returns this client's {@code CookieStore}
* <p>
* All cookies added to this store will be send with every request.
* The CookieStore honors the domain, path, secure and max-age properties of received cookies
* and is automatically updated with cookies present in responses received by this client.
* @return this client's cookie store
*/
CookieStore cookieStore();
}