본문 바로가기

Room 102. Back-end/Spring

[실전 개발자를 위한 Spring Framework ] 강의 - RESTful API

10강 RESTful API

  • 목차
    • 내용
      • RESTful API 웹 서비스
      • JSON 데이터 포맷
    • 학습 목표
      • RESTful 섭스에 대한 이해와 설계 방식을 학습!
      • 웹 서비스의 데이터 교환의 사실상 표준인 JSONn에 대해 알아보고
        서비스 구현 시 활용해봅니다.
  • Open API(Application Programming Interface)의 개념
    • Open API는 말 그대로 개방형 API이다.
    • API가 응용 프로그램을 개발할 때 사용하는 인터페이스라는 의미.
    • 프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 인터페이스를 말합니다.
    • Daum, Naver 등의 포털 사이트나 통계청, 기상청 등과 같은 관공서에서도
      가지고 있는 데이터를 외부 응용 프로그램에서 사용할 수 있도록 Open API를 제공하고 있습니다.
    • Open API와 함께 자주 거론되는 기술이 REST이며, 대부분 Open API는 REST 방식으로 지원됩니다.
  • REST(REpresentation Safe Transferful) API 란?
    • HTTP URI + HTTP Method
      - 자원을 메소드들을 이용하여 제어하는 방식.
      - HTTP 규약에 근거하여 URI로 자원을 명시하고, Method 로 자원을 다루는 방식을 말합니다.
    • HTTP URI를 통해 제어할 자원(Resource)을 명시하고,
    • HTTP Method (GET,POST,PUT,DELETE)를 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 아키텍처.
    • HTTP 프로토콜에 정의된 4개의 메소드들이 자원(Resource)에 대한 CRUD Operation을 정의합니다.
    • RESTful API는 HTTP와 URI 기반으로 자원에 접근할 수 있도록 제공하는 애플리케이션 개발 인터페이스
      (REST의 원리는 따르는 시스템은 RESTful이란 용어로 지침합니다.)
  • RESTful 웹 서비스와 JSON/XML
    • HTTP URI를 통해 자원을 다루다보면, URI로 데이터를 다루기 위해 XML/JSON 이란 방식을 사용하게 됩니다.
    • XML은 태그로 인스턴스 등을 구성하며 자원 낭비가 있는 편이기에 JSON 이 많이 쓰임.
    • JSON(JavaScript Object Notation)이란
      • http://www.json.org
      • JSON은 경량(lightweight)의 DATA-교환 방식
      • javascript에서 객체를 만들 때 사용하는 표현식을 의미
      • JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아,
        최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용
      • 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 
        JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공하고 있음.

 

  • JSON 라이브러리 - Jackson
    • http://jackson.codehaus.org
    • High-Perfomance JSON Processor!
    • Jackson은 JSON 형태를 Java 객체로, Java 객체를 JSON 형태로 변환해주는 java 용 JSON 라이브러리.
    • 가장 많이 사용하는 JSON 라이브러리입니다.
  • Spring MVC 기반의 RESTful 웹 서비스 구현 절차!
    • 1. RESTful 웹 서비스를 처리할 RestfulController 클래스 작성 및 Spring Bean으로 등록.
    • 2. 요청을 처리할 메소드에 @RequestMapping @RequestBody와 @ResponseBody 어노테이션 선언
      • JSON 만 return 하고 싶을 때 @ResponseBody 쓰면 되며, 자동으로 JSON 형식으로 바껴서 리턴.
    • 3. REST Client Tool(Postman)을 사용하여 각각의 메소드 테스트
    • 4. Ajax 통신을 하여 RESTful 웹서비스를 호출하는 HTML 페이지 작성
  • RESTful Controller를 위한 핵심 어노테이션
    • Spring MVC에서는 클라이언트에서 전송한 XML이나 JSON 데이터를 Controller에서
      Java객체로 변환해서 받을 수 있는 기능(수신)을 제공하고 있음
      • @RequestBody : HTTP Request Body(요청 몸체)를 Java객체로 전달받을 수 있음.
    • Java객체를 XML이나 JSON으로 변환해서 전송할 수 있는 기능(송신)을 제공하고 있음
      • @ResponseBody : Java 객체를 HTTP Response Body(응답 몸체)로 전송할 수 있음.
      • ex) ajax 로 select한 데이터만 받고 싶을 때! URL 변화, 리다이렉트는 필요없을 때!!!
      • 이 때, Jackson 라이브러리가 있어야, java 객체를 Json 형태로 바꾸어줌!!
  • 실습 내용!
    • RESTful service 개발 :: @ResponseBody
    • Postman을 통한 테스트