Expand description
Low-level interfaces to the Compute APIs.
For most applications, you should instead use the types in the top level of the crate, such as
Request and Response. Future SDKs will not include
these interfaces.
§Reasons not to use handles
-
The high-level interface has many more conveniences for application development. For example, there are methods for transparently reading and writing HTTP bodies as JSON, and common function argument types such as header values can accept and convert a variety of types automatically.
-
BodyHandleandStreamingBodyHandleare unbuffered. Performance can suffer dramatically if repeated small reads and writes are made to these types. The higher-level equivalents,BodyandStreamingBodyare buffered automatically, though you can explicitly control some aspects of the buffering usingstd::io::BufReadandstd::io::Write::flush(). -
Explicit buffer sizes are required to get data such as header values from the Compute host. If the size you choose isn’t large enough, the operation will fail with an error and make you try again. The high-level interfaces automatically retry any such operations with the necessary buffer sizes.
-
The high-level interface keeps data about a request or response in WebAssembly memory until it is sent to the client or a backend, whereas the handle interface is backed by memory in the Compute host.
Suppose your application needs to manipulate headers in multiple functions. The handle interface would require you to either manually keep track of the headers separately from the handle they came from, or perform redundant copies to and from WebAssembly memory. The high-level interface would keep all of your header information in WebAssembly until it’s ready to use, improving performance.
Modules§
- config_
store - Low-level Compute Config Store interfaces.
- dictionary
Deprecated - Low-level Compute Dictionary interfaces.
Structs§
- Body
Handle - A low-level interface to HTTP bodies.
- Pending
Request Handle - A handle to a pending asynchronous request returned by
RequestHandle::send_async()orRequestHandle::send_async_streaming(). - Request
Handle - The low-level interface to HTTP requests.
- Response
Handle - A low-level interface to HTTP responses.
- Streaming
Body Handle - A low-level interface to a streaming HTTP body.
Enums§
- Cache
Override - Optional override for response caching behavior.
- Poll
Handle Result - The result of a call to
PendingRequestHandle::poll().
Functions§
- client_
ddos_ detected Deprecated - Returns whether the request was tagged as contributing to a DDoS attack
- client_
ip_ addr Deprecated - Returns the IP address of the client making the HTTP request.
- client_
original_ header_ count - Returns the number of headers in the client request as originally received.
- client_
original_ header_ names - Returns the client request’s header names exactly as they were originally received.
- client_
request_ and_ body - Get handles to the client request headers and body at the same time.
- client_
tls_ cipher_ openssl_ name - Get the cipher suite used to secure the downstream client TLS connection, as a string, panicking if it is not UTF-8.
- client_
tls_ client_ hello Deprecated - Get the raw bytes sent by the client in the TLS ClientHello message.
- client_
tls_ ja4 Deprecated - Get the JA4 hash of the TLS ClientHello message.
- client_
tls_ ja3_ md5 Deprecated - Get the JA3 hash of the TLS ClientHello message.
- client_
tls_ protocol Deprecated - Get the TLS protocol version used to secure the downstream client TLS connection, as a string, panicking if it is not UTF-8.
- select_
handles - Given a collection of
PendingRequestHandles, block until the result of one of the handles is ready. - server_
ip_ addr Deprecated - Returns the IP address on which this server received the HTTP request.