기존에 사용하던 Alamofire에서 Moya로 변경을 진행해보았다.
기존방식
Alamofire.request(url주소, method: .post, parameters: parameters)
.responseJSON { response in
switch response.result {
case .success(let json):
print("success")
case .failure(let error):
print("fail")
}
}
func getShopInfo() {
let provider = MoyaProvider<DispathData>()
let authParams = ["****_id": "***",
"****": "***"]
provider.request(.userInfo(authParams)) { (result) in
switch result {
case .success(let response):
if let jsonData = try? JSONDecoder().decode(ShopInfo.self, from: response.data) {
//데이터 저장 & 화면 이동
}
case .failure(let error):
print(error)
}
}
}
import Moya
enum DispathData {
case userInfo(_ data: [String :String])
}
extension DispathData: TargetType {
var baseURL: URL {
// baseURL은 API Endpoint를 의미한다.
switch self {
case .userInfo:
return URL(string: "API 주소")!
default:
return URL(string: "API 주소")!
}
}
var path: String {
// path는 API 메서드를 정한다.
switch self {
case .userInfo:
return "/ url뒤에 붙은 주소"
}
var method: Moya.Method {
// 각 enum case마다 method를 정해 줄 수 있다.
switch self {
case .users :
return .get
default:
return .post
}
}
var sampleData: Data {
return Data()
}
var task: Task {
switch self {
case .userInfo(let data):
return .requestParameters(
parameters: data,
encoding: URLEncoding.default
)
default:
return .requestPlain
}
}
var headers: [String : String]? {
// 리퀘스트 헤더를 정할 수 있다.
// 여기서는 쓰이지 않아서 빈값으로 넣었다.
return nil
}
}
- 이렇게 하고나서 돌리면 해당 오류를 방출한다. App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app’s Info.plist file. (해당 url이 http:// 로 시작되면 차단시킨다.)
—-> 그렇다면 해당 target의 Info.plist로 가서 App Transport Security Settings -> Allow Arbitray Loads 를 YES로 해준다.