2017-01-24 3 views
0

Ich bin ein struct mit Konstanten zu bilden URL Endpunkte.Build Endpoints mit Struktur

struct Constants { 
    struct Api { 
     static let BaseUrl = "http://srv.com/ws_rest/" 
     static let LoginPassword1 = "credentials?member_account_pwd=" 
     static let LoginUsername2 = "&member_account_login=" 
     static let Login3 = "&channelId=4" 
    } 
} 

Das Endergebnis ist:

let url = URL.baseUrlWith(string: Constants.Api.LoginPassword1 + "pass" + Constants.Api.LoginUsername2 + "user" + Constants.Api.Login3) 

Dies ist nur für einen Endpunkt. Kennt jemand einen besseren praktischen Ansatz dazu?

+0

Das ist die Art, wie ich statische Variablen namespace. Ich denke, es ist in Ordnung. – sdasdadas

Antwort

1

könnte es nützlich sein, eine Funktion zu haben, die Sie

func urlString(with baseURL: String, and parameters: [String: String])->String { 
     var mutableBaseURL = baseURL 
     for (i, param) in parameters.enumerated() { 
      var symbol = "&" 
      if i == 0 { symbol = "?" } 

      mutableBaseURL += "\(symbol)\(param.key)=\(param.value)" 
     } 
     return mutableBaseURL 
    } 

hilft So würde Ihre Konstanten so etwas wie

struct Constants { 
    struct Endpoints { 
     static let login = "http://srv.com/ws_rest/credentials" 
    } 

    struct Parameters { 
     static let username = "member_account_login" 
     static let password = "member_account_pwd" 
     static let channelId = "channelId" 
    } 
} 

Irgendwo im Code werden müssen Sie

let url = urlString(with: Constants.Endpoints.login, and: [ 
       Constants.Parameters.username: username, 
       Constants.Parameters.password: pass, 
       Constants.Parameters.channelId: "4" 
      ]) 

Ich hoffe es hilft.

+0

Das war ein guter Ausgangspunkt. Kudos – bruno

Verwandte Themen