콘텐츠로 건너뛰기
Home » Blog » 데이터 교환 형식(JSON, XML)과 API

데이터 교환 형식(JSON, XML)과 API

  • web

JSON

정의

  • JavaScript Object Notation
  • 자바스크립트 객체 문법으로 구조화된 데이터 교환 형식
  • 여러 언어에서 데이터 교환형식으로 쓰이며 객체 문법말고도 단순 배열(JSON Array), 문자열도 표현 가능

1. JavaScript 객체 문법

  • 키(key)와 값(value)으로 구성 → {key : value}
  • 이미 존재하는 키를 중복선언 → 마지막에 선언한 값이 할당된다. (스크립트 언어이므로!)

2. 데이터 + 교환형식

  • 데이터는 추상적인 아이디에서부터 시작해 구체적 측정에 이르기까지 다양한 의미를 가짐
  • 실험, 조사, 관찰 등으로 부터 얻은 사실이나 자료

3. 여러 언어에서의 쓰임

  • 여러 언어 및 플랫폼에서 독립적으로 사용됨 (= 언어의 업데이트와 상관없이 독립적인 JSON)
    • JS : JSON.parse() → JS Object 생성 후 사용
    • Python : JSON.loads() → Python Dictionary 생성 후 사용
  • 객체, 해시테이블, 딕셔너리 등으로 변환되어 쓰임

4. 단순 배열, 문자열 표현

  • 단순배열 ex) [1, 2, 3, 4]
  • 문자열 : “abcdefg”

5. JSON의 타입

  • JavaScript Object와 유시하지만 undefined, 메서드 등을 포함할 수 없음
    • 수(Number), 문자열(String), 참/거짓(Boolean), 배열(Array), 객체(Object), null

6. JSON 직렬화, 역직렬화

  • 직렬화란 외부의 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술이며 역직렬화는 반대를 의미
  • JSON.parse() ↔ JSON.stringify()

7. JSON의 활용

  • JSON은 프로그래밍 언어와 프레임워크 등에 독립적이므로 서로 다른 시스템간에 데이터를 교환하기 유리함
  • 주로 API의 반환형태, 시스템을 구성하는 설정파일에 활용됨
  • ex) 업비트의 API, package.json

XML

정의

  • XML(Extensible Markup Language)은 마크업 형태를 쓰는 데이터 교환형식
  • 마크업은 태그 등을 이용하여 문서나 데이터의 구조를 나타내는 방법 (속성부여도 가능)

구성

  1. 프롤로그 : 버전, 인코딩
  2. 루트요소(단 하나만)
  3. 하위 요소들

HTML과 XML 의 차이

JSON 과 XML의 차이

활용

  • sitemap.xml : xml의 대표적인 사용처
  • sitemap.xml은 서비스 내의 모든 페이지들을 리스트업한 데이터
  • 사이트가 매우 크거나 서로 링크가 종속적으로 연결되지 않은경우 크롤러가 누락하는 일 발생 가능
    • 이를 방지하고 모든 페이지를 크롤링 할 수 있도록 해줌

API

정의

  • API(Application Programming Interface)는 둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층을 의미한다.
  • 프로토콜, 메서드, 데이터타입 등이 정의된 중계계층
  • 인터페이스(Interface)
    • 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면
    • 이를 통해 해당 컴퓨터의 내부서버가 어떻게 구현되어있는지는 상관없이 인터페이스를 통해 통신 등이 가능

작동 방식

  • API는 다음과 같이 중계계층으로서 작동한다.
  • API 아키텍처는 일반적으로 클라이언트와 서버 측면에서 설명된다.
    • 요청을 보내는 애플리케이션을 클라이언트라고 하고 응답을 보내는 애플리케이션을 서버라고 한다.
  • 사용자가 브라우저를 통해 서버에 요청을 하게 되면 API가 중계계층역할을 하며 요청을 처리한다.
  • 직접 서버의 DB에 접근하는 것을 방지하기도 한다.

참고 : https://aws.amazon.com/ko/what-is/api/

장점

  • 제공자는 서비스의 중요한 부분을 드러내지 않아도 된다. → 드러내고 싶은 부분만 드러낼 수 있다.
  • 사용자는 해당 서비스가 어떻게 구현되는지 알 필요없이 필요한 정보만을 받을 수 있다.
  • OPEN API의 경우 앱 개발 프로세스를 단순화 시키고 시간과 비용을 절약할 수 있다.
  • 내부 프로세스가 수정되었을 때 API를 매번 수정하는 것이 아닌 API가 수정이 안되게 만들 수 있다.
    • 이를 통해 내부 DB, 서버의 로직이 변경이 되어도 매번 사용자가 앱을 업데이트 하는 일을 줄일 수 있다.
    • ex) DB 튜닝
  • 제공자는 데이터를 한 곳에 모을 수 있다.
    • 이벤트를 집계하고 싶을 때 해당 API를 만들고 해당 이벤트가 발생하면 해당 API를 호출하게 만들어서 데이터를 한 곳에 모을 수 있다.
    • ex) 베스트셀러, 사용자이벤트 등

API의 종류

  • private API
    • 내부적으로 사용된다.
    • 주로 해시키를 하드코딩해놓고 이를 기반으로 서버와 서버간의 통신을 한다.
    • 비즈니스 파트너와 해시키를 공유해 통신할 수도 있다.
  • public API
    • 모든 사람들이 사용할 수 있다.
    • 많은 트래픽을 방지하기 위해 하루 요청수의 제한, 계정 당 제한 등으로 관리

실습

  • 모든 URI에는 포트번호가 숨겨져있다.
    • http : 80
    • https : 443