• Feed
  • Explore
  • Ranking
/
/
    💻 Dev

    URL의 구성 요소 및 REST API

    iosSwift
    지
    지성
    2025.02.12
    ·
    2 min read

    URL의 기본 구조

    https://www.example.com:443/path?query=1#fragment

    • Scheme: 프로토콜 (https, http 등)

    • Host: 서버 주소 (www.example.com)

    • Port: 통신 포트 (443, 80 등)

    • Path: 리소스 경로 (/path)

    • Query: 쿼리 파라미터 (?query=1)

    • Fragment: 해시값 (#fragment)

    REST API

    • REST(Representational State Transfer): 웹 서비스를 위한 아키텍처 스타일

    • HTTP 메서드:

      • GET: 데이터 조회

      • POST: 데이터 생성

      • PUT: 데이터 수정

      • DELETE: 데이터 삭제

    URLSession

    URLSession은 네트워크 요청을 처리하는 API로, REST API와 통신할 때 사용한다.

    • GET 요청 예제

      import Foundation
      
      func fetchData() {
          let url = URL(string: "https://jsonplaceholder.typicode.com/todos/1")!
          let task = URLSession.shared.dataTask(with: url) { data, response, error in
              if let data = data {
                  let json = try? JSONSerialization.jsonObject(with: data, options: [])
                  print(json ?? "데이터 없음")
              }
          }
          task.resume()
      }
    • POST 요청 예제

      import Foundation
      
      func postData() {
          let url = URL(string: "https://jsonplaceholder.typicode.com/posts")!
          var request = URLRequest(url: url)
          request.httpMethod = "POST"
          request.setValue("application/json", forHTTPHeaderField: "Content-Type")
          
          let body: [String: Any] = ["title": "foo", "body": "bar", "userId": 1]
          request.httpBody = try? JSONSerialization.data(withJSONObject: body, options: [])
          
          let task = URLSession.shared.dataTask(with: request) { data, response, error in
              if let data = data {
                  let json = try? JSONSerialization.jsonObject(with: data, options: [])
                  print(json ?? "응답 없음")
              }
          }
          task.resume()
      }






    - 컬렉션 아티클