인프런 커뮤니티 질문&답변

김범석님의 프로필 이미지

작성한 질문수

앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지

URLSession (문법 - 170강)

RESTful API 질문있습니다!

24.02.04 18:10 작성

·

170

·

수정됨

0

안녕하세요 앨런님! 강의 잘 듣고 있습니다!

 

앨런님 강의 덕분에 IOS개발자로 면접을 보게되었는데 자격요건에 "Restful api 기반 앱 개발 경험이 있으신 분" 이라는 문장이 있는데 현재 제가 배운게 앨런님이 알려주신 섹션 14에 urlsession쪽에 내용만 알고 있습니다!

 

제가 다음주 수요일 면접에서 restful api에 대한 질문을 받으면 어떻게 대답을 해야지 올바른 답변이 될 수 있을까요? 어디서 부터 손을 대야할지 잘 모르겠어서 이렇게 질문 드리게 되었습니다 읽어주셔서 감사합니다 :) 

 

일단 restful api에 대해서 구글링하면서 공부는 하고 있는데 , 딱히 뭐라고 답변을 드려야할지... 생각이 안나서.. 질문을 작성했씁니다 ㅠ

 

 

현재 제가 사용자 프로필을 위해 이미지를 urlsession을 통해 가져오고 있는데

이 코드들을 이용해서 답변을 할 수 있을지도 궁금합니다!

 

var imageCache = [String: UIImage]()

 

extension UIImageView {

    

    func loadImage(with urlString: String) {

        

        // 이미지가 캐쉬데이터로 존재하는지 확인하고 싶음, cache 키값을 넣어서 이제 벨류로 나오게 하는거임

        if let cacheImage = imageCache[urlString] {

            self.image = cacheImage

            return

        }

        

        // 저는 

        

        // 이미지 위치

        guard let url = URL(string: urlString) else { return }

        

        // url콘텐츠를 가져오기 , HTTP의 각종 메서드를 이용해 서버로부터 응답 데이터를 받아서 Data 객체를 가져오는 작업을 수행한다

        URLSession.shared.dataTask(with: url) { data, response, error in

            

            //에러가 뜬 경우

            if let error = error {

                print("이미지를 불러오지 못해서 에러", error.localizedDescription)

            }

            

            // 이미지 데이터를 만든경우

            guard let imageData = data else { return }

            

            // 가져온 이미지를 통해 이미지 설정

            let photoImage = UIImage(data: imageData)

            

            // 키 값이랑 이미지 캐시를 설정 , 키값은 이미지의 문자열 , 벨류는 당연히 이미지 사진이됨

            imageCache[url.absoluteString] = photoImage

            

            // 이미지 설정

            DispatchQueue.main.async {

                self.image = photoImage

            }

            

            

        }.resume() //일시중단된 작업을 재개해서 중단되면 다시 이미지가 로드될 수 있도록

        

    }

}

답변 1

0

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

2024. 02. 04. 18:15

네 안녕하세요 범석님.
먼저 Rest API가 뭔지 정확하게 감을 가지시면 될 것 같네요!

https://youtu.be/iOueE9AXDQQ?si=W_VDIU3GPtwAWfj-
https://youtu.be/7LbylTMlj8M?si=yePxqgfdnQuI3yCa
https://youtu.be/ZuJUk9c2Ujs?si=fSC8QJjUvUDAHuLi

기타 이외에도, 유튜브에 "rest api"라고 검색해보시면 많은 자료들이 나옵니다.

대부분의 API들이, restful하게 이미 설계되어 있어서..
우리는 그걸 그냥 사용하는 연습을 해본 것인데..

실제로 이것이 무엇을 의미하는 개념인지 한번 정리해보시면
좋을 것 같습니다. :)

 

감사합니다 !

김범석님의 프로필 이미지
김범석
질문자

2024. 02. 04. 19:41

링크 감사합니다 !

혹시 면접관이 restful api에 경험에 대해서 물어보면 솔직하게 rest api에 대한 개념만 알고 있다라고 설명을 해야할까요? 아니면 지금이라도 restful api에 대한 클론코딩을 작성을 하는게 좋을까요 ?

 

앨런님이 만약 면접자의 입장이라면 어떻게 행동할건지도 궁금합니다!

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

2024. 02. 04. 20:05

범석님,
restfult api에 대해 제대로 검색해보신게 맞을까요?

본강의의 음악앱을 만들면서 이미 restfult api를 사용해보신거예요..

restfult api는 네트워크 통신 API를 어떤식으로 만드는 것에 대한
규약/규칙 같은 것이지 (백엔드의 API작성 방식에 대한 일반적인/관행적인 약속)

restfult api를 통한 네트워크 방식이 따로 있어서
그걸 따로 학습해야 하는 내용이 있는 것이 아닙니다...;;;

보내드린 링크부터 시청하시고,
다시 한번 "restfult api"가 무엇인지 잘 검색해보시면 좋을 것 같네요 ^^;

본 강의의 몇개의 네트워크 통신관련
강의 내용을 보셨다면, 이미 restfult api를 다뤄보신겁니다.

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

2024. 02. 04. 20:21

다시 말씀드리면, "Restful api 기반 앱 개발 경험"을 얘기하고 있는건, 서버 네트워크 통신을 통해 이미지를 다운로드 받는 다던지, 데이터를 다운로드 받는 다던지 등..

"서버와 통신하는 앱을 만들어본 경험"이 있냐고 물어보는 질문하고 동일합니다.

왜냐면, 계속 말씀드리지만.. 최근의 모든 서버 api들은 Restful한 방식으로 작성되어 있습니다. 따라서 지금 제가 말씀드리고 있는 이야기를 이해못하시는 건.. 그냥 "Restful api"라는 용어가 무엇인지에 대한 사전 지식이 없으셔서 그런 것 뿐입니다.

"Restful api"가 무엇인지 먼저 이해하시면..
이미 다뤄봤는데, 단순히 이 용어를 모르기 때문에..
무언가 특별하게 따로 학습해야하는 내용이 있는 것으로 생각하셔서 그럴뿐입니다... ^^;

김범석님의 프로필 이미지
김범석
질문자

2024. 02. 04. 20:33

 

"서버와 통신하는 앱을 만들어본 경험"이 있냐고 물어보는 질문하고 동일합니다

 

저는 무조건 restful api가 post,put,delete,get등 메소드를 사용해야지 되는줄 알았는데, 그러면 저 메소드 말고도 firebase를 통해서 데이터베이스를 이용하여 이미지를 다운로드 받았다는거도 restful api에 해당된다는건가요?

 

 

 

 

 

 

 

 

 

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

2024. 02. 04. 22:27

네 맞습니다.
이미지를 다운 받은 것도 restfult api사용 경험에 당연히 해당되죠.
물론, post,put,delete,get를 익숙하게 사용하는 것이 맞냐?라는 것과는 별개이겠지만요.

김범석님의 프로필 이미지
김범석
질문자

2024. 02. 05. 15:17

아 이해했습니다. 메소드에 포커스에 맞춰서 이해를 못했었네요 감사합니다 !!