NestedResponse

@propertyWrapper
public struct NestedResponse<Response> where Response : Decodable
extension NestedResponse: Decodable

A property wrapper that wraps a nested response.

To support inheritance, which can be especially useful for pagination, use the property wrapper @NestedResponse to add nested responses.

While decoding the flat HTTP response will be applied recursively to all nested responses, therefore it is possible, that different nested responses access different values of the original HTTP response.

Example:

struct PaginatedResponse<NestedRequest: Request>: Decodable {

    /// Header which indicates how many more elements are available
    @ResponseHeader<DefaultHeaderStrategy> var totalElements

    @NestedResponse var nested: NestedRequest
}

struct ListRequest: Request {

    typealias Response = PaginatedResponse<ListResponse>

    struct ListResponse: Decodable {
        // see other examples
    }
}
  • The wrapped value representing the nested response.

    This property holds the nested response value that is managed by this property wrapper.

    Declaration

    Swift

    public var wrappedValue: Response
  • Initializes a new instance of NestedResponse with the specified wrapped value.

    Example usage:

    @NestedResponse var nestedResponse: MyResponseType
    

    Declaration

    Swift

    public init(wrappedValue: Response)

    Parameters

    wrappedValue

    The wrapped value representing the nested response.

  • Initializes a new instance of NestedResponse by decoding from the given decoder.

    Throws

    An error if the decoding process fails.

    Declaration

    Swift

    public init(from decoder: Decoder) throws

    Parameters

    decoder

    The decoder to read data from.