枚举是否有限制,我无法设置由枚举实现的协议的属性。
我想使Headers字段可配置,允许设置headers。 我知道枚举只有计算属性,这甚至可能。
protocol APIConfiguration : URLRequestConvertible {
var method : HTTPMethod { get }
var path : String { get }
var parameters : Parameters? { get }
var baseURL : String { get }
var headers : [String : String]? { get set }
}
enum LoginEndpoint: APIConfiguration
{
case login
case user
// MARK: - Base URL
var baseURL : String
{
switch self
{
case .login, .user:
return K.Graph.baseURI
}
}
// MARK: - HTTPMethod
var method : HTTPMethod
{
switch self
{
case .login:
return .get
case .user:
return .get
}
}
// MARK: - Path
var path : String
{
switch self
{
case .login:
return "/v1.0/me/"
case .user:
return "/user.read"
}
}
// MARK: - Parameters
var parameters : Parameters?
{
switch self
{
case .login:
return nil
case .user:
return nil
}
}
var headers : [String : String]?
{
get {
if let sessionToken = SessionStore.shared.sessionToken
{
return [HTTPHeaderField.authentication.rawValue:sessionToken]
}
return nil
}
set {}
}
}