Removing Parameters associated type from the Endpoint protocol
d4nielrve opened this issue · comments
Daniel Rivera Verde commented
Endpoint protocol includes an associated type named Parameters but I don't understand what this type contributes in this case, I mean, we can define an endpoint as a struct which implements Endpoint protocol like:
private struct MockEndpointWithParameters: Endpoint {
let name: String
let age: Int
...
}
so you will instantiate the endpoint like
let endpoint = MockEndpointWithParameters(name: "Daniel", age: 20)
we could remove the function where Parameters are being used and just include a couple of properties to the protocol:
public protocol Endpoint {
associatedtype RequestBody = Empty
associatedtype ResponseBody = Empty
associatedtype Auth: _EndpointAuth = EndpointAuth.None
/// The HTTP method of the endpoint.
var method: HTTP.Method { get }
var path: String { get }
var queryItems: [URLQueryItem] { get }
/// Serializes the request body into the given URLRequest.
func serializeBody(_ body: RequestBody, into request: inout URLRequest) throws
/// Deserializes the response body from the received data.
func deserializeBody(_ data: Data) throws -> ResponseBody
}
and then we could even remove the corresponding parameters
param from the request method.
Finsi Ennes commented
Solved in #8