티스토리 뷰

반응형

서버에서 json 형식의 데이터를 받아오려면 HTTP 통신을 해야한다

HTTP 통신 라이브러리의 최강자인 Alamofire 이용하면 매우 simple 한 request코드를 작성할 수 있다 


+


서버가 보안상의 이유로  인증된 사용자 에게만 데이터를 준다고 한다면, 인증된 사용자가 보낸 request 인지를 어떻게 알 수 있을까? 


HTTP 헤더에 Authorization 이란 key 값으로 서버가 " 인증된 사용자구나 OK! " 할 수 있는 value 값을 보내면 된다 


이 access_key 는 앱에서 여러 API를 호출할때 마다 헤더에 실어보내야하므로  안전한 곳에 저장하여 어디서나 접근 가능하게 할 수 있어야한다


이를 위한 라이브러리로는  Keychain-swift 를 추천한다  ( 사용법도 매우 간단하고 안전성도 좋은 것 같고 여러 디바이스 간의 싱크도 제공한다 굿굿 )

KeychainSwift에 access_key를 저장 (key - value 값으로)


KeychainSwift().set(access_key, forKey: "access_key")
cs


key값으로 해당 value값을 가져온다 


KeychainSwift().get("access_key")! //String? 값을 리턴해주므로 !를 붙여서 옵셔널을 해제하고 String값만
cs


이제 request 해보자


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let url = "http://www......."
let headers: HTTPHeaders = ["Authorization" : KeychainSwift().get("access_key")!]
    
    let request = Alamofire.request(url,headers:headers)
            .responseJSON{ (responseObject) in
   
                if responseObject.result.isSuccess {
 
 
                }
                if responseObject.result.isFailure {
 
                }
        }
        
    debugPrint(request)
cs


request를 찍어보면 


-H "Authorization: access_key값"


를 확인할 수 있다 


반응형
댓글