DecodableResponseSerializer
public final class DecodableResponseSerializer<T> : ResponseSerializer where T : Decodable, T : Sendable
A ResponseSerializer that decodes the response data as a Decodable value using any decoder that conforms to
DataDecoder. By default, this is an instance of JSONDecoder.
Note
A request returning nil or no data is considered an error. However, if the request has an HTTPMethod or
the response has an HTTP status code valid for empty responses then an empty value will be returned. If the
decoded type conforms to EmptyResponse, the type’s emptyValue() will be returned. If the decoded type is
Empty, the .value instance is returned. If the decoded type does not conform to EmptyResponse and
isn’t Empty, an error will be produced.
Note
JSONDecoder and PropertyListDecoder are not Sendable on Apple platforms until macOS 13+ or iOS 16+, so
instances passed to a serializer should not be used outside of the serializer. Additionally, ensure a new
serializer is created for each request, do not use a single, shared serializer, so as to ensure separate
decoder instances.
-
Declaration
Swift
public let dataPreprocessor: any DataPreprocessor -
The
DataDecoderinstance used to decode responses.Declaration
Swift
public let decoder: any DataDecoder -
Declaration
Swift
public let emptyResponseCodes: Set<Int> -
Declaration
Swift
public let emptyRequestMethods: Set<HTTPMethod> -
Creates an instance using the values provided.
Declaration
Swift
public init(dataPreprocessor: any DataPreprocessor = DecodableResponseSerializer.defaultDataPreprocessor, decoder: any DataDecoder = JSONDecoder(), emptyResponseCodes: Set<Int> = DecodableResponseSerializer.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = DecodableResponseSerializer.defaultEmptyRequestMethods)Parameters
dataPreprocessorDataPreprocessorused to prepare the receivedDatafor serialization.decoderThe
DataDecoder.JSONDecoder()by default.emptyResponseCodesThe HTTP response codes for which empty responses are allowed.
[204, 205]by default.emptyRequestMethodsThe HTTP request methods for which empty responses are allowed.
[.head]by default. -
Declaration
Swift
public func serialize(request: URLRequest?, response: HTTPURLResponse?, data: Data?, error: (any Error)?) throws -> T
View on GitHub
Install in Dash