JSON(Javascript Object Notation)
-
속성-값 쌍 또는 키-값 쌍
데이터 오브젝트를 전달하기 위해 텍스트를 사용하는 개방형 표준 포맷
-
AJAX에서 많이 사용됨
-
XML을 대체함
-
표현 자료형
- 숫자
- 문자열: ""
- 배열: 각 요소는 기본 자료형이거나 배열, 객체
[10, {"v":20}, [30, "가"]]
- 객체: 이름/값 쌍의 집합
{"가":1, "나":"이", "다":true}
-
JSON 문법
- 이름/값 쌍
- { 로 시작하고 } 로 끝
- 배열은 [ ]
- 도구
Parser: JSON tex 파일 해석하고 자바 오브젝트로 변환
Renderer: 자바를 text로 표현
Serializer: POJO와 JSON 표현으로 직렬화
(Plain Old Java Object)
Mapper: POJO와 JSON을 매핑
Vaildator: JSON 스키마를 이용해서 파일 내용 유효성 체크
-
JSON 장점
XML은 모두 string, JSON은 string, number, array, boolean 등
Javascript 코드 안에서 JSON 객체에 접근이 쉬움
-
JSON 단점
태그가 없어서 가족성이 떨어짐
DTO같은 것이 없기 때문에 데이터 형식이 틀렸을 경우 체크가 쉽지 않음
XML(Extensible Markup Language)
- HTML의 단점을 보완한 인터넷 언어
SGML(Standard Generalized Markup Language)의 복잡한 단점을 개선한 특수목적을 갖는 마크업 언어
- 인간과 기계가 모두 이해할 수 있는 텍스트 형태로 마크업 포맷을 정의하기 위한 메타언어
- 사용자가 직접 문서의 태그를 정의할 수 있음.
AJAX(Asynchronous Javascript And XML)
REST(Representation State Transfer)
https://velog.io/@rosy137/RESTREpresentational-State-Transfer
-
분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처
-
리소스(자원), 메서드(처리), 메시지
자원(URI)
처리(HTTP Methods-GET, POST, PUT, DELETE)
콘텐츠 타입(XML, JSON)
-
REST는 행위에 대한 메서드를 HTTP Method 중 CRUD에 해당하는 4가지만 사용
POST - create
GET - read
PUT - update
DELETE - delete
-
REST Resource
ex) 사용자 생성
HTTP POST, http://main/users/
{
"name": "사용자",
"address": "서울"
}
- REST resource에 대한 처리 방법
- 클라이언트/서버 구조: 클라이언트, 서버 독립적으로 구현, 의존성 축소
- 무 상태성: API 서버는 들어오는 요청만 단순히 처리, 불필요한 정보 관리하지 않음
- 일관된 인터페이스: HTTP 표준을 따음, URI로 지정한 리소스에 대한 조작
- 캐시 처리 기능: HTTP가 가진 캐싱 기능 적용, HTTP 프로토콜 표준에서 사용하는 Last-Method 태그, E-Tag를 이용 캐싱 구현
- 자체 표현 구조: API 메세지를 보고 API 이해할 수 있는 구조