#[repr(transparent)]
pub struct ResponseHandle { /* private fields */ }
Expand description

A low-level interface to HTTP responses.

For most applications, you should use Response instead of this interface. See the top-level handle documentation for more details.

Sending to the client

Each execution of a Compute@Edge program may send a single response back to the client:

If no response is explicitly sent by the program, a default 200 OK response is sent.

Creation and conversion

Response handles can be created programmatically using ResponseHandle::new()

Response handles are also returned from backend requests:

Implementations

An invalid handle.

This is primarily useful to represent uninitialized values when using the interfaces in fastly_sys.

Returns true if the response handle is valid.

Returns true if the response handle is invalid.

Get a mutable reference to the underlying u32 representation of the handle.

This should only be used when calling the raw ABI directly, and care should be taken not to reuse or alias handle values.

Turn a handle into its representation without closing the underlying resource.

This should only be used when calling the raw ABI directly, and care should be taken not to reuse or alias handle values.

Acquire a new response handle.

By default, the response will have a status code of 200 OK and empty headers.

Read the response’s header names via a buffer of the provided size.

If there is a header name that is longer than buf_size, this will return a BufferSizeError; you can retry with a larger buffer size if necessary.

Get a response’s header values given a header name, via a buffer of the provided size.

If there is a header value that is longer than the buffer, this will return a BufferSizeError; you can retry with a larger buffer size if necessary.

Examples

Collect all the header values into a Vec:

let name = HeaderName::from_static("My-App-Header");
let buf_size = 128;
let header_values: Vec<HeaderValue> = response
    .get_header_values(&name, buf_size)
    .collect::<Result<Vec<HeaderValue>, _>>()?;

To try again with a larger buffer if the first call fails, you can use unwrap_or_else():

let name = HeaderName::from_static("My-App-Header");
let buf_size = 128;

// Collect header values into a `Vec<HeaderValue>`, with a buffer size of `128`.
// If the first call fails, print our error and then try to collect header values
// again. The second call will use a larger buffer size of `1024`.
let header_values: Vec<HeaderValue> = response
    .get_header_values(&name, buf_size)
    .collect::<Result<_, _>>()
    .unwrap_or_else(|err: BufferSizeError| {
        eprintln!("buffer size error: {}", err);
        let larger_buf_size = 1024;
        response
            .get_header_values(&name, larger_buf_size)
            .collect::<Result<_, _>>()
            .unwrap()
    });

Set the values for the given header name, replacing any headers that previously existed for that name.

Get the value of a header, or None if the header is not present.

If there are multiple values for the header, only one is returned. See get_header_values() if you need to get all of the values.

If the value is longer than max_len, this will return a BufferSizeError; you can retry with a larger buffer size if necessary.

Set a response header to the given value, discarding any previous values for the given header name.

Add a response header with given value.

Unlike insert_header(), this does not discard existing values for the same header name.

Remove all response headers of the given name, and return whether any headers were removed.

Set the HTTP status code of this response.

Get the HTTP status code of this response.

Get the HTTP version of this response.

Set the HTTP version of this response.

Immediately begin sending this response downstream to the client with the given body.

Immediately begin sending this response downstream to the client, and return a StreamingBodyHandle that can accept further data to send.

Sets the way that framing headers are determined for this response.

Close the ResponseHandle by removing it from the host Session. If the handle has already been closed an error will be returned. A ResponseHandle is only consumed when you send a response to a client or stream one to a client. You should call close only if you don’t intend to use that Response anymore.

Examples
let response = ResponseHandle::new();
// The handle is not being used so we can close it out without any
// trouble
response.close()?;

Trait Implementations

Formats the value using the given formatter. Read more

Executes the destructor for this type. Read more

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.