[Swift] API와 REST 이해하기

승민·2025년 5월 6일

Swift

목록 보기
7/10
post-thumbnail
  • APIREST에 대해 알고 RESTful이 뭔지 알아보는 시간이에요.
  • Open API를 활용해서 요청에 응답받는 실습을 해보며 더 자세히 알아볼게요.

1. REST (REpresentational State Transfer)

먼저 REST가 무엇인지 알아볼게요.

1 - 1. REST란?

  • RESTREpresentational State Transfer의 줄임말로 표현 상태 전달 또는 자원의 상태에 대한 표현을 주고받는 방식으로 표현할 수 있어요.
  • REST는 웹에서 리소스를 주고받기 위한 아키텍쳐 스타일을 의미해요.
    • 여기서 핵심은 REST는 특정 기술이 아니라 설계 원칙을 모아둔 집합을 의미해요.
  • HTTP 프로토콜을 기반으로 클라이언트와 서버 간 데이터를 교환하는 규칙을 정의한 것이에요.
    • 모든 리소스는 고유한 URI로 식별하고 HTTP 메서드를 통해 CRUD 작업을 수행해요.

1 - 2. REST의 주요 특징

  • REST리소스, 주소, 행동으로 특징을 나타낼 수 있어요.
  • 리소스(Resource)
    • 인터넷에 존재하는 모든 정보를 리소스로 간주해요.
  • 주소(URI, URL)
    • 리소스를 식별하는 고유한 주소로 명사를 기반으로 설계해요.
      • 사용 예 : /users, /posts/3
      • 나쁜 예 : /getUsers
  • 행동(HTTP method)
    • 리소스에 대한 작업을 정의해요.
    • 주요 methodCRUD 작업과 매핑해요.
      • GET, POST, PUT, DELETE

2. RESTful

이러한 REST 구조를 가지는 RESTful에 대해서도 알아볼게요.

2 - 1. RESTful이란?

  • RESTfulREST의 설계 원칙을 최대한 준수하여 만든 API 또는 서비스를 의미해요.
    • REST 를 얼마나 잘 따르는 지에 따라 RESTful 말고도 REST-like 또는 실용적 RESTful API 등으로도 나타낼 수도 있어요.
  • "REST 원칙대로 주소와 동작을 깔끔하게 잘 설계한 APIRESTful하다" 라고 할 수 있어요.

2 - 2. RESTful한 API 예시

  • 이러한 RESTfulAPI의 예시는 다음과 같아요.
    • GET /users → 회원 목록 보기
    • GET /users/1 → 1번 회원 정보 보기
    • POST /users → 새 회원 추가
    • PUT /users/1 → 1번 회원 정보 수정
    • DELETE /users/1 → 1번 회원 삭제

3. RESTful API와 HTTP 전송방식

3 - 1. CRUD

  • 일반적으로 서버에 요청하는 정보의 타입은 쓰기, 읽기, 수정, 삭제로 구분돼요.
  • 각각 Create, Read, Update, Delete로 첫글자를 합쳐서 CRUD라고 불러요.

3 - 2. URI 구성 권고

  • RESTful API 구성에서 URI에는 정보의 분류 체계만 포함하는 것을 권장해요.
  • 동사와 같이 정보를 어떻게 다룰 것인가 하는 동작에 관한 내용은 명시하지 않는 것을 권고해요.
    • 이는 REST의 핵심 설계 원칙인 일관된 인터페이스(Uniform Interface)를 준수하는 것으로 직관적 API 사용으로 재사용성이 높기 때문이에요.
  • 동작은 HTTP method를 이용하여 GET, POST, PUT, DELETE 등을 정의해요.
    • 이는 RESTful API직관성, 확장성, 유지보수, 표준화가 되며, 클라이언트와 서버 간의 명확한 역할 분리를 할 수 있기 때문이에요.

4. XML과 JSON

  • 위와 같이 RESTful API는 설계 원칙을 준수한 리소스의 전달 방식이에요.
  • Open API 같은 경우도 RESTful API 인 경우가 많아요.
  • Open API에서 요청을 통해 얻은 응답의 경우 대표적으로 XMLJSON 형태로 응답받는 경우가 많아요. 이에 대해서 간단히 알아볼게요.

4 - 1. XML(Extensible Markup Language)

  • XML은 다음과 같은 구성요소를 가져요.
    • 시작 태그 <element>
    • 끝 태그 </element>
    • 빈 요소 태그 <element/>
  • 각 태그의 이름을 지정할 수 있는 마크업 언어여서 Extensible Markup Language로 불려요.
  • 그러나 각 태그가 서로 다른 이름을 가져야 하기 때문에 데이터량이 크다는 단점이 존재해요.

4 - 2. JSON(JavaScript Object Notation)

  • 이러한 XML의 문제점을 해결하고자 만들어진 형식이 JSON이에요.
  • JSON은 경량의 데이터 교환 형식을 가지고 있어요.
    • 집합구조 {} : 여러가지 속성을 다양하게 정의할 수 있는 집합구조
      • `{ 키 : 값, 키 : 값 ... }
      • 명칭 : JSON 객체
    • 리스트구조 [] : 비슷한 상황이 반복되는 리스트 구조
      • [객체1, 객체2, ... ]
      • 명칭 : JSON 배열

5. API

이러한 형식의 데이터를 주고 받기 위해서는 여러 사전 조건이 필요해요.
어떤 형식으로 데이터를 요청하고 받아올지를 결정하는 규약이 있어야 해요.
그래야 우리가 원하는 데이터만 요청하고 전달 받을 수 있기 때문이에요.
그러한 형식을 API라고 부르고 이에 대해서 알아볼게요.

5 - 1. API란?

  • APIApplication Programming Interface의 줄임말로 주고 받기 위한 형식, 규약 등을 의미해요.
  • 두 개 이상의 컴퓨터 프로그램이 서로 통신하는 방법이에요.
    • 컴퓨터나 소프트웨어를 서로 연결하는 방식이에요.

5 - 2. Open API

  • 일부 웹사이트에서 SOAP(Simple Object Access Protocol)이나 RESTful 형식을 사용하여 공공 컨텐츠를 제공해요.
  • 이러한 제공되는 데이터를 오픈API (Open API)라고 해요.

5 - 3. 공공 데이터 실습

  • 이러한 Open API를 통해 데이터를 받아보는 실습을 통해서 그 동작방식을 알아볼게요.

5 - 3 - 1. 영화진흥위원회

  • 여러 오픈 API가 있지만, 하나를 선택해야 하기 때문에 영화진흥위원회에서 제공하는 영화 DB를 받아보는 실습을 해볼게요.

5 - 3 - 2. 영화진흥위원회 api 검색

5 - 3 - 3. 접속 후 로그인

5 - 3 - 4. API Key 발급 및 확인

5 - 3 - 5. API로 일일 데이터 받아오기

https://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=<API KEY>&targetDt=20250505

5 - 4. Open API 사용 단계 정리

  • 원하는 정보를 제공하는 웹 서비스와 사용할 Open API 선정
  • Open API 사용을 위한 신청과 인증키 발급
  • 네트워크를 통해 데이터 요청
  • 받은 데이터를 파싱하여 사용

6. 정리

  • 이렇게 RESTRESTful API에 대해서 알아봤어요.
  • 영화진흥위원회의 Open API를 이용해서 데이터를 받아오는 실습까지 진행해봤어요.

출처 : Smile Han - iOS 프로그래밍 기초

0개의 댓글