Cleaning up the Alamofire Interface

Before

func fetchStuff() {
  request("https://www.awesome.app/stuff",
          method: .get,
          parameters: ["awesomeData" : 10],
          encoding: JSONEncoding.default,
          headers: [ "X-Client-Token":
           "5642c6578ede62f53ed2ce94238a4ebba346898c36c211da11fbe78e51849194" ])
      .validate()
      .responseJSON(queue: DispatchQueue.main) { response in
      //do stuff with response
  }
}

Clean up

class CleanAPI {

  static let endpoint = "https://www.awesome.app/"
  static let defaultHeaders: [String:String] =  [ "X-Client-Token": "5642c6578ede62f53ed2ce94238a4ebba346898c36c211da11fbe78e51849194" ]

  static func get(
    _ route: String,
    parameters: Parameters? = nil,
    encoding: ParameterEncoding = JSONEncoding.default,
    headers: HTTPHeaders? = defaultHeaders )
    -> DataRequest {
      let combinedURL = endpoint + route
      return Alamofire.request(
        combinedURL,
        method: .get,
        parameters: parameters,
        encoding: encoding,
        headers: headers)
        .validate()
  }

After

CleanAPI.get("stuff", parameters: ["awesomeData" : 10])
.responseJSON(queue: DispatchQueue.main) { response in
  //do stuff with response
}