Restful API

1. OpenAPI(Application Programming Interface)란?

  • 프로그래밍에서 사용할 수 있는 개방된 인터페이스
  • 포털 사이트나 관공서에서 가지고 있는 데이터를 외부 응용 프로그램에서 사용할 수 있도록 Open API를 제공하고 있다
  • 대부분의 Open API는 REST 방식으로 지원되고 있다

2. RESTful

REST(REpresentational State Transfer, 표현 상태 전송) API란?

  • HTTP URI + HTTP Method
    • URI을 통해 제어할 자원을 명시하고Method(GET, POST, PUT, DELETE)를 통해 해당 자원을 제어할 명령을 내리는 방식의 아키텍처
  • HTTP 프로토콜에 정의된 4개의 메서드들이 자원에 대한 CRUD Operation을 정의
    • POST: Create(Insert)
    • GET: Read(Select)
    • PUT: Update or Create
    • DELETE: Delete

3. JSON(JavaScript Object Notation, 자바스크립트 객체 표기법)이란?

  • http://www.json.org
  • Javascript에서 객체를 만들 때 사용하는 표현식을 의미
  • JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서 데이터 전송에 자주 사용
  • 특정언어에 종속되지 않으며 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공

JSON 형식

  • key-value 형식의 쌍
  • 배열도 담을 수 있음
{
	"Key":"value",
	"name":"홍길동",
	"age":"20",
    "hobby":["운동","독서"]
}

Jackson 라이브러리

  • http://jackson.codehaus.org
  • JSON 형태를 java 객체로, java 객체를 JSON 형태로 변환해주는 Java 라이브러리

4. RESTful 서비스 구현

Spring MVC 기반 RESTful 웹서비스 구현 절차

  • RESTful 웹서비스를 처리할 RestfulController 클래스 작성 및 Spring Bean 등록
  • 요청을 처리할 메서드에 @RequestMapping, @RequestBody, @ResponseBody 어노테이션 선언
  • REST Client Tool(Postman)을 사용하여 각각의 메서드 테스트
  • Ajax 통신을 통해 RESTful 웹서비스를 호출하는 HTML페이지 작성

RESTful Controller를 위한 핵심 어노테이션

  • @RequestBody: HTTP Request Body를 Java객체로 전달
  • @ResponseBody : Java 객체를 HTTP Response Body로 전송