개방형 API(Application Programming Interface)
프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 인터페이스를 의미한다
대부분의 Open API는 REST 방식으로 지원되고 있다
주로 XML 웹 서비스 방식과 Restful 방식으로 작성되고 있다
HTTP URI와 HTTP Method를 합친 형태
HTTP URI를 통해 제어할 자원을 명시하고, HTTP Method(GET,POST,PUT,DELETE)를 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍처
HTTP 프로토콜에 정의된 4개의 메서드들이 자원에 대한 CRUD Operation을 정의한다
Http Method | CRUD |
---|---|
POST | Create(Insert) |
GET | Read(Select) |
PUT | Update 또는 Create |
DELETE | Delete |
URI에 동사를 포함하는 것을 지양하는 것이 REST API의 명명규칙 중 하나
API의 요청과 응답은 보통 XML과 JSON 타입이나, 최근 JSON 타입인 경우가 많음
경량 DATA 교환 형식, Javascript에서 객체를 만들 때 사용하는 표현식
JavaScript Object Notation의 약자로, API 서버 또는 클라이언트 서버 간 데이터 교환 포맷으로 많이 사용된다
특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링할 수 있는 라이브러리가 제공된다
JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아 최근 XML을 대체하여 데이터 전송 등에 많이 사용된다
(1) name-value 형식의 쌍
예시
{
"firstName":"Stieve",
"email":"jobs@google.com"
}
(2) 값들의 순서화된 리스트 형식: 여러가지 언어들에서 array,list로 실현
예시
{
"hobby":["jobs","google"]
}
Jackson은 JSON 형태를 Java 객체로, Java 객체를 JSON 형태로 변환해주는 Java용 JSON 라이브러리이다
Spring MVC에서는 클라이언트에서 전송한 XML이나 JSON 데이터를 Controller에서 Java 객체로 변환해서 받을 수 있는 기능(수신)을 제공한다
Java 객체를 XML이나 JSON으로 변환해서 전송할 수 있는 기능(송신)을 제공한다
(1) @RequstBody
HTTP Request Body를 Java 객체로 받을 수 있다
(2) @ResponseBody
Java 객체를 HTTP Response Body로 전송할 수 있다