728x90
지금은 통신중
API 통신은 너무 중요하니 꼭 알아가자
HTTP
Hyper Text Transfer Protocol
인터넷에서 데이터를 주고 받을 수 있는 Protocol
프로그램 간 정보 교환 가능
* 단반향 통신
- Client가 요청을 해야만 Server에서 응답하는 구조
- 역은 성립 안됨
* Connectless
- 비연결성
- 모든 클라이언트 요청에 대해 연결하고 해체하는 과정이 반복됨
* Stateless
- 무상태성
- Server가 Client의 정보를 기억하지 못 한다
- 웹에서는 쿠키를 통해 식별하고 앱에서는 토큰을 통해 Client를 식별한다
* HTTP Status Code
Client와 Server 간의 성공 여부와 오류를 알려주는 코드
* Get
- Server에 데이터 요청하는 Method
- 보안에 취약하다
* Post
- 택배 배송으로 기억하자
- 택배 기사는 택배 상자의 소비자의 물품을 보지 못 한다
- HTTP body에 데이터를 포함해서 전달함
- 상대적으로 Get 보다는 보안적
- URL 자체내에 데이터를 포함하지 않음 <-> Get
Almofire
func requestBoxOffice(date: String) {
let url = "\(EndPoint.boxOfficeURL)key=\(APIKey.BOXOFFICE)&targetDt=\(date)"
//접두어 -> AF 알라모파이어에서 url주소로 들어가고 get 방식 유효성 검사(상태코드) 실행 ex) 200 = 성공 response 데이터 가져오겠다
AF.request(url, method: .get).validate().responseData { response in
switch response.result {
case .success(let value):
let json = JSON(value)
print("JSON: \(json)")
//데이터 넘어 왔을 때 지움
self.list.removeAll()
for movie in json["boxOfficeResult"]["dailyBoxOfficeList"].arrayValue {
let movieNm = movie["movieNm"].stringValue
let openDt = movie["openDt"].stringValue
let audiAcc = movie["audiAcc"].stringValue
let data = BoxOfficeModel(movieTitle: movieNm, releaseDate: openDt, totalCount: audiAcc)
self.list.append(data)
}
self.searchTableView.reloadData()
self.hud.dismiss()
case .failure(let error):
print(error)
}
}
}
Get 방식으로 URL 내에 Key 정보와 URL 정보를 gitignore를 활용한 파일내에 숨겼다
json 방식을 채택했고 데이터는 insomnia에서 URL을 넣어 확인한 후 가져왔다
'Tech > iOS' 카테고리의 다른 글
[iOS] Day 31 - Xcode에서 gitignore 생성하는 간단한 방법 (0) | 2022.08.03 |
---|---|
[iOS] Day30 - Rest API (0) | 2022.08.02 |
[iOS]Day 29 - Singleton Pattern (0) | 2022.08.01 |
[iOS] Day 26 - Custom Font (0) | 2022.07.29 |
[iOS]Day 26 - Notification (0) | 2022.07.29 |