API유형
private API
private API는 내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행한 것. 따라서 제 3자에게 노출되지 않는다.
public API
public API는 개방형 API로, 모두에게 공개. 누구나 제한 없이 API를 사용할 수 있는 것이 특징.
partner API
partner API는 기업이 데이터 공유에 동의하는 특정인들만 사용 가능.
URLSessionDataTask
HTTP의 각종 메서드를 이용해 서버로부터 응답 데이터를 받아서 Data 객체를 가져오는 작업을 수행
URLsessionUploadTask
애플리케이션에서 웹 서버로 Data 객체 또는 파일 데이터를 업로드하는 작업을 수행. 주로 HTTP의 POST 혹은 PUT 메서드를 이용
URLSessionDownloadTask
서버로부터 데이터를 다운로드 받아서 파일의 형태로 저장하는 작업을 수행. 애플리케이션의 상태가 대기 중이거나 실행 중이 아니라면 백그라운드 상태에서도 다운로드가 가능
JSON Load
func searchForTerm(_ searchTerm: String, completion : @escaping (_ results: FlickrSearchResults?, _ error : NSError?) -> Void){
URLSession.shared.dataTask(with: searchRequest, completionHandler: { (data, response, error) in
guard let resultsDictionary = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions(rawValue: 0)) as? [String: AnyObject],
let stat = resultsDictionary["stat"] as? String else {
let APIError = NSError(domain: "FlickrSearch", code: 0, userInfo: [NSLocalizedFailureReasonErrorKey:"Unknown API response"])
OperationQueue.main.addOperation({
completion(nil, APIError)
})
return
}
})
}
Image Load
func loadImage(_ completion: @escaping (_ flickrPhoto:FlickrPhoto, _ error: NSError?) -> Void) {
URLSession.shared.dataTask(with: loadRequest, completionHandler: { (data, response, error) in
}).resume()
}