URLSession 실습(1) - URL

2022. 4. 28. 17:28·iOS/iOS 개념

URL 생성

let urlString = "https://ai-hong.tistory.com/213?category=911246"
let url = URL(string: urlString)

// URL의 String 값 "https://ai-hong.tistory.com/213?category=911246"
url?.absoluteString

// URL의 네트워킹 방식 "https"
url?.scheme

// 기반이 되는 주소  "ai-hong.tistory.com"
url?.host

// URL의 디렉토리  "/213"
url?.path

// URL의 쿼리값  "category=911246"
url?.query

// 기반이 되는 URL  nil
url?.baseURL
  • 다음과 같은 프로퍼티들을 이용하여 URL의 정보에 대해 파악할 수 있다.
  • BaseURL 의 경우 별도로 설정하지 않으면 nil 로 뜨기 때문에 BaseURL에 접근 하기 위해서는 relativeTo 프로퍼티를 별도로 baseURL을 지정해주어야 한다
// BaseURL을 설정하고 접근하기 위한 방법
let baseURL = URL(string: "https://ai-hong.tistory.com")
let relationURL = URL(string: "213?category=911246", relativeTo: baseURL)

relationURL?.absoluteString
relationURL?.scheme
relationURL?.host
relationURL?.path
relationURL?.query
relationURL?.baseURL "Optional(https://ai-hong.tistory.com)"
  • BaseURL이 Optional이기 때문에 적절한 바인딩이 필요함

URLComponents

  • URL 만 사용해서 구성하게 되면 쿼리 내용중 혹은 URL 내용중 한글이나 특수문자 등과 같은 것이 들어가면 서버쪽에서 Error를 내뿜게 된다, 이러한 상황을 방지하고자 Components를 사용할 수 있다
let baseURL = URL(string: "https://ai-hong.tistory.com")
let relationURL = URL(string: "213?category=한글", relativeTo: baseURL)

// 통신이 제대로 작동하지 않기 때문에 nil 출력
relationURL?.absoluteString
relationURL?.scheme
relationURL?.host
relationURL?.path
relationURL?.query
relationURL?.baseURL

→ URL 의 쿼리에 한글이 포함되어 정상적인 통신을 못하고 nil을 출력

  • URLComponents 를 생성한후, URLQueryItem을 설정해 추가하여 인코딩이 되어 통신 정상적으로 수행
// URLComponents는 Query 직전까지의 주소를 할당
var urlComponents = URLComponents(string: "https://ai-hong.tistory.com/213?")
// 추가되는 쿼리들은 다음과 같이 변수로 할당
let categoryQuery = URLQueryItem(name: "category", value: "한글")

// 추가한 쿼리 Item을 urlComponents에 추가
urlComponents?.queryItems?.append(categoryQuery)

// "category=%ED%95%9C%EA%B8%80" 출력 -> 한글이 통신 가능한 상태로 인코딩된다
urlComponents?.url?.query

// "https://ai-hong.tistory.com/213?category=%ED%95%9C%EA%B8%80" 출력
urlComponents?.url?.absoluteString

 

URLSession 에 대한 개념 파악하기

'iOS/iOS 개념' 카테고리의 다른 글
  • Codable 을 알아보자
  • URLSession 실습(2) - URLSession 적용
  • URLSession - 이론
  • Concurrent 동시성
Jeohong
Jeohong
기억 보단 기록을
  • Jeohong
    Chikong Devlog
    Jeohong
  • 전체
    오늘
    어제
    • 분류 전체보기 (186)
      • ---- 개발 컨텐츠 ---- (0)
      • iOS (30)
        • Swift 문법 (1)
        • iOS 개념 (12)
        • HIG (5)
        • SwiftUI (7)
        • UIKit (4)
      • Side Project (0)
      • 개발서적 (4)
        • 객체지향 사실과 오해 (4)
      • 알고리즘 (74)
        • 자료구조 개념 (2)
        • Swift (25)
        • JavaScript (47)
      • ---- 회고 계획 컨텐츠 ---- (0)
      • 계획 및 일기 (10)
      • 회고록 (1)
      • 컨퍼런스 탐방 (1)
      • 미드로 영린이 탈출하기 (1)
      • ---- Previous content ---- (0)
      • Frontend (2)
        • HTML & CSS (2)
      • KITRI 수업 (17)
        • 리눅스 (14)
        • 네트워크 (2)
      • 42seoul (17)
        • Bonr2code (9)
        • 넋두리 (7)
        • 멘토특강 (1)
      • 해킹 실습 (20)
        • 해커스쿨 - F.T.Z (19)
        • WebGoat (1)
      • Tensorflow로 시작하는 NLP (1)
        • 예제 (1)
      • 자연어처리 입문 (1)
        • 이론 (1)
      • 텐서플로로 배우는 딥러닝 (7)
        • 이론 (2)
        • 예제 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크
    개발자
    swift
    boj
    1서클
    Algorithm
    알고리즘
    42seoul
    자료구조
    본과정
    42서울
    javascript
    IOS
    스위프트
    SwiftUI
    프로그래머스
    hig
    백준
    코딩
    라피신
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Jeohong
URLSession 실습(1) - URL
상단으로

티스토리툴바