ios개발/개념 정리

<스위프트> URLSessionTask, swfift REST API GET

studying develop 2020. 3. 10. 21:06
                URLSession.shared.dataTask(with: url){ data, res, err in
                    if let data = data{

                    }
                //resume이 뭐지?
                }.resume()

 

음 resume()이 뭐지?

URLSessionTask

[https://developer.apple.com/documentation/foundation/urlsessiontask]

 

dataTask(with:) 

[https://developer.apple.com/documentation/foundation/urlsession/1411554-datatask]

 

urlsessionTask의 dataTask가 task를 생성하고 resume()을 통해서 재개한다고 한다....

 


https://developers.kakao.com/docs/restapi/tool

 

이것은 카카오api이다. 헤더에 저 값을 넣어서 get으로 요청해야 하는데, 파라미터에 넣는건 url에 넣으면 되는데 헤더에는 어떻게 값을 넣는지 몰ㄹ랐ㅅ다....

 

if let url = URL(string : url)
    var request = URLRequest(url: url)
    
    request.addValue("KakaoAK \(KAKAO_API_KEY)", forHTTPHeaderField: "Authorization")
    request.httpMethod = "GET"
    
    // data,res,err in 이 어떻게 사용되는거지? 이 세가지는 어디서 오는 거지?
    URLSession.shared.dataTask(with : request ){  data, res, err in
        if let data = data{
            var jsonDic = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String:Any]
            
            print(jsonDic)
        }
    }.resume()
}

URLRequest에 이런식으로 설정할 수 있다.

 


한글로 쿼리를 넣으니 안됬다. 그래서 검색으로 찾아보니

 

// 한글이 포함된 주소는 작동 하지 않기 때문에 urlQueryAlll 옵션을 사용해서 인코딩을 해줍니다.

let searchLink = str_temp.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!

출처: https://devsc.tistory.com/77 [You Know Programing?]

 

 

이걸 보기전에 자꾸 utf8로 바꾸고 있어는데 그게 문제가 아니라 url encoding을 해줘야 되는건데 왜 그랬지;;


 

추가로 URL관련 클래스가 너무 많아서 뭐가 뭔지 잘 모르겠다.... 시간이 되면 정리해보자.