## API Reference
-#### `Client([ssl], [timeout], [pool_limits], [max_redirects])`
+#### Client
*An HTTP client, with connection pooling, redirects, cookie persistence, etc.*
>>> response = await client.get('https://example.org')
```
+* `def __init__([ssl], [timeout], [pool_limits], [max_redirects])`
* `async def .request(method, url, [content], [headers], [stream], [allow_redirects], [ssl], [timeout])`
* `async def .get(url, [headers], [stream], [allow_redirects], [ssl], [timeout])`
* `async def .options(url, [headers], [stream], [allow_redirects], [ssl], [timeout])`
*Data-structures for HTTP primitives...*
-#### `Response(...)`
+#### Response
*An HTTP response.*
+* `def __init__(...)`
* `.status_code` - **int**
* `.reason_phrase` - **str**
* `.protocol` - `"HTTP/2"` or `"HTTP/1.1"`
* `async def .close()` - **None**
* `async def .next()` - **Response**
-#### `Request(method, url, content, headers)`
+#### Request
*An HTTP request. Can be constructed explicitly for more control over exactly
what gets sent over the wire.*
>>> response = await client.send(request)
```
+* `def __init__(method, url, content, headers)`
* `.method` - **str** (Uppercased)
* `.url` - **URL**
* `.content` - **byte** or **byte async iterator**
* `.headers` - **Headers**
-#### `URL(url, allow_relative=False)`
+#### URL
*A normalized, IDNA supporting URL.*
'example.org'
```
+* `def __init__(url, allow_relative=False)`
* `.scheme` - **str**
* `.authority` - **str**
* `.host` - **str**
* `def .copy_with([scheme], [authority], [path], [query], [fragment])` - **URL**
* `def .resolve_with(url)` - **URL**
-#### `Origin(url)`
+#### Origin
*A normalized, IDNA supporting set of scheme/host/port info.*
True
```
+* `def __init__(url)`
* `.is_ssl` - **bool**
* `.host` - **str**
* `.port` - **int**
-#### `Headers(headers)`
+#### `Headers`
*A case-insensitive multi-dict.*
'application/json'
```
+* `def __init__(headers)`
+
___
## Alternate backends