관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] URI vs URL 개념 (URLSession, Bundle.main.url) 본문

iOS 기본 (swift)

[iOS - swift] URI vs URL 개념 (URLSession, Bundle.main.url)

jake-kim 2021. 9. 15. 23:17

URI vs URL

  • 개념
    • URI(Uniform Resource Identifier): 특정 리소스 식별자
    • URL(Uniform Resource Location): 특정 리소스 위치
  • URI 방법 중 하나가 URL

1번에 URI, 2번이 URL

  • 위 그림에서 1번은 특정 리소스의 식별자 자체를 의미하므로 URI, 2번은 파일의 위치를 가리키므로 URL

swift에서 URL을 사용하는 예

  • 이때 리소스가 HTML인 경우 - URLSession
let defaultSession = URLSession(configuration: .default)

guard let url = URL(string: "\(resource)") else {
     print("URL is nil")
     return
}

// Request
let request = URLRequest(url: url)

// dataTask
let dataTask = defaultSession.dataTask(with: request) { ...
  • 리소스가 로컬 파일인 경우 - Bundle.main.url로 접근
if let url = Bundle.main.url(forResource: "help", withExtension: "html") {
   /// allowingReadAccessTo: url.deletingLastPathComponent(): "help.html"이라는 파일 로드하는 코드
   webView.loadFileURL(url, allowingReadAccessTo: url.deletingLastPathComponent())
}

웹에서의 URI 구조

  • scheme: 사용할 프로토콜
  • host: 접근할 서버의 호스트 이름
  • path: 접근할 서버의 경로에 대한 정보
  • query: 접근할 대상에 전달하는 추가적인 정보 (= 파라미터)
  • cf) fragment: 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 값 (query뒤에 '#' prefix로 표현)
Comments