본문 바로가기

Tech/iOS

[iOS] Day29 - Api 통신

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