(TCP : 3-way handshaking)
(UDP : 3-way handshaking, but speed is fast)
designated initalizer & conveinient initailizer이 있고,
부모클래스에서 호출 & 같은 클래스에서 호출이 차이점
parentheses : 괄호
hyphen : -
angle braket : >
동기&비동기
javascript fetch란
initailizer
내 앱 -> API -> 웹서버
Request
(이때 query보냄)
(ex: 런던의 날씨)
내 앱 <- API <- 웹서버
Response
(이때 data 보냄)
이렇게 request하고 response하는 과정을 네트워킹이라고 함.
URL object를 만들고,
URLSession이라는 networking 하는 object를 만든다. (chrome browser이 하는 것 처럼)
url을 크롬 브라우저에 입력한 것 처럼, 브라우저에 특정한 데이터를 fetching하게 한것처럼, 일을 시킨다.
url을 크롬 브라우저에 입력하고 엔터 누를 것 처럼, 실행시킨다.
func performRequest(urlString: String){
// 1. Create a URL
if let url = URL(string: urlString){
// 2. Create a URLSession
let session = URLSession(configuration: .default)
}
// 3. Give URL Session a task
session.dataTask(with: url, completionHandler: handle(data: response: error: )
// (Data?, URLReseponse?, Error?) -> Void)
// 4. Start the task
task.resume()
}
func handle(data: Data?, response: URLResponse?, error: Error?){
if error != nil{
print(error!)
return // 애러라면 그냥 return해서 이 function나가게 한다.
}
if let safeData = data{
let dataString = String(data: safeData, encoding: .utf8)
print(datastring)
}
}
URL이라는 class에서 string이라는 property를 urlString이라는 것을 passing 할것임.
참고로 string: ... 여기 부분에는 string이 들어가야함.
그리고 if let url = URL ... 하는 이유는 URL이 optional binding하기때문임. nil이 아닐경우 실행된다.
환경 default로 한다. 크롬 브라우저에서 perform하는 것 처럼.
멈춰질 수 있고 새롭게만들어진 task라 이 method(task.resume())호출해야 4번단계 start the task 가능. 그렇구나
function이다. no output(return void)
func에 func handle()->void{}나 func handle(){}나 같음. void return은 ancle bracket안써도 됨
data가 optional binding해서 property인 것이고, encoding .utf8은 unicode 방식중 하나이다. 주로 이걸쓰는듯.
utf8 참고
func performRequest(urlString: String){
// 1. Create a URL
if let url = URL(string: urlString){
// 2. Create a URLSession
let session = URLSession(configuration: .default)
}
// 3. Give URL Session a task
session.dataTask(with: url) { (data, response, error) in
if error != nil{
print(error!)
return // 애러라면 그냥 return해서 이 function나가게 한다.
}
if let safeData = data{
let dataString = String(data: safeData, encoding: .utf8)
print(datastring)
}
}
// 4. Start the task
task.resume()
}