HTTP Request
HTTP method
The first parameter of the request method of an HTTP adapter allows to specify the
HTTP method to be used.
The HTTP adapter provides syntactic sugar for regular HTTP methods: get, options,
head, post, put, patch, delete.
URL
The URL will be computed from:
- The
urlattribute of theHTTPAdapterSpecof each client - The
urlargument passed to therequestmethod (orget,post, etc.)
The rules used for combining URLs are quite flexible, and allow for the most frequent use cases:
- Appending to the URL (a
/separator will be used) - Keeping only the base URL by using an absolute path (starting with
/) - Replacing the URL entirely by specifying an other URL
Body
The body and body_encoding decide the data that will be sent in the body of the
request.
Here are the possible values for body_encoding:
HTTPBodyEncoding.AUTO-
Some heuristics are used to determine which encoding to use.
HTTPBodyEncoding.NONE-
Only basic types such as
bytesandstrare allowed, and will be passed transparently. HTTPBodyEncoding.JSON-
Data will be JSON-encoded.
HTTPBodyEncoding.URLENCODE-
Only works for
dicttypes; keys and values will be urlencoded like a query string. HTTPBodyEncoding.MULTIPART-
Only works for
dicttypes; all values are encoded as if they were file data.
Headers
The headers will be computed from:
- The
headersattribute of theHTTPAdapterSpecof each client - The
headersargument passed to therequestmethod (orget,post, etc.)
The later values override the former ones, in a case-insensitive manner.
Note
Depending on the body_encoding value, a content-type header may be automatically
added.
Expected status codes
The expected_status_codes parameter allows to specify which status codes are expected
to be returned in the HTTP response. An HTTPStatusCodeError if the value in the
response is unexpected.
This argument can be:
- An
int(e.g.204) - A
strwhere the characterxmeans “any digit” (e.g."2xx") - An iterable of the previous items (e.g.
("2xx", 404))
Warning
By default, only the 200 status code is considered expected.
In contrast, other libraries such as requests
consider only status codes 4xx and 5xx to be unexpected.
Stream mode
To ask the server to stream the response, set the stream_response parameter to True.
It is then recommended to use the data_stream attribute of
the response object and to use it
as a context manager.
Retry options
If an exception is raised when performing the request, 2 more attempts will be made with some wait time between them.
This can be customized by passing some arguments:
retry_nb_attemptsto specify the total number of attempts (defaults to 3 attempts)retry_wait_initial,retry_wait_maxandretry_wait_jitterallow to specify the exponential backoff parameters for the retry (they default to 1s, 60s and 1s respectively)
Finally, a retry_callback can be passed to be notified when a retry is performed. This
can be used for logging purposes for instance.
All these parameters can be specified (by order of precedence):
- When calling a request method (or get, post, etc.)
- On the HTTPAdapterSpec of each client