REST API
본문 바로가기
Spring/Spring Boot

REST API

by IYK2h 2021. 7. 23.
728x90

REST(Representational State Transfer)

정의

자원(resource)의 표현(representation)에 의한 상태(state) 전달(transfer)

구성 요소

  • 자원(Resource) : URI
  • 행위(Verb) : HTTP Method
    • HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공
  • 표현(Representation of Resource)
    • Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
    • 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 표현으로 나타내어 질 수 있다.
    • JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이나 JSON을 주로 사용한다.
    • JSON vs XML

특징

  • Uniform Interface(인터페이스 일관성)
    • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 요청 가능
  • Server(자원)-Client(요청) 구조
    • 역할을 확실히 구분시킴으로써 서로 간의 의존성을 낮춤
  • Cacheable(캐시 처리)
    • HTTP 기존 웹 표준을 그대로 사용하기 때문에 캐싱 기능 적용
  • Stateless(무상태성)
    • 서버는 각각의 요청을 별개의 것으로 인식하고 처리
    • 서버의 부담을 줄이기 위함
    • HTTP 프로토콜은 Stateless Protocol이므로 REST 역시 무상태성을 갖는다.
  • Layered System(계층화)
    • 각 유형을 클라이언트가 볼 수 없는 계층 구조로 체계화
    • 중간 매체를 사용 - 클라이언트는 서버와 직접 통신하는지, 중간 서버와 통신하는지 알 수 없다.
  • Code-On-Demand(선택(optional))
    • 요청을 받으면 서버에서 클라이언트로 실행 가능한 코드를 전송하여 클라이언트 기능을 확장할 수 있는 기능

REST API

정의

REST 기반으로 서비스를 API를 구현한 것

특징

  • REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 한다.
  • HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
  • 델파이 클라이언트, 자바, C#, WEB 등을 이용해 클라이언트 제작할 수 있다.

Spring boot 에서 JSP 한계

  • Jetty, Tomcat Server 사용할 때 WAR-Packaging을 사용하면 작동한다. 모든 표준 컨테이너에도 배포 할 수 있습니다. 그리고 사용 가능한 WAR이 작동될 때 JAVA -jar과 함께 작동된다.
  • JSP를 사용될 때 JAR-Packaging 을 지원하지 않는다.
  • Undertow는 JSP를 지원하지 않는다.
  • custom error.jsp 페이지를 만들어도 error handling을 위한 View가 재정의되지 않는다. 대신 custom error pages를 사용해야한다.

아래 링크 7.4.5 내용 번역 https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.developing-web-applications.embedded-container.customizing.direct

Spring boot 에선 Thymeleaf(타임리프)

  • Thymeleaf는 비교적 최근에 만들어진 템플릿 엔진이며 서버사이드 자바 템플릿 엔진의 한 종류
  • 템플릿 엔진, th:xx 형식으로 속성을 html 태그에 추가하여 값이나 처리 등을 페이지에 넣을 수 있다.
    • th:text는 태그 안에 들어가는 텍스트 값이다.

JSP, Thymleaf 차이

JSP와 달리 Servlet Code로 변환되지 않는다. 따라서 비즈니스 로직과 분리, View에 집중 가능(최근 JSP를 지향 중)

템플릿 엔진이란

동적 컨텐츠를 생성하는 방법

템플릿 양식에 적절한 특정 데이터를 넣어 결과 문서를 출력합니다. 텍스트 템플릿 엔진의 종류로는 Freemarker, Thymeleaf, JSP(Java Server pages) 등이 있습니다

템플릿 엔진의 필요성

  • 대부분의 Template Engine은 HTML에 비해 간단한 문법을 사용, 코드량을 줄일 수 있다
  • 데이터만 바뀌는 경우가 굉장히 많아 재사용성 높다
  • 유지 보수에 용이

서버 사이드 템플릿 엔진

  • 서버에서 가져오 데이터를 미리 정의된 템플릿에 넣어 html을 그린 뒤 클라이언트에세 전달

클라이언트 사이드 템플릿 엔진

  • HTML 형태로 코드를 작성하여, 동적으로 DOM을 그리게 해주는 역할

설계 규칙

[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog

 

[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

REST API 제대로 알고 사용하기 : NHN Cloud Meetup

 

REST API 제대로 알고 사용하기 : NHN Cloud Meetup

REST API 제대로 알고 사용하기

meetup.toast.com

RESTful API란 ?

 

RESTful API란 ?

개발 공부를 시작하고 자주 접하고 그냥 지나친 개념 중에 하나이다. 면접 질문으로도 자주 나온다고 하고, 실제로 채용공고 필요 역량에도 REST 등 인터넷 기반 프로토콜/ 기술에 대한 이해를 요

brainbackdoor.tistory.com

Reference

https://velog.io/@dsunni/Spring-Boot-스프링-웹-MVC-Thymeleaf

https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.developing-web-applications.embedded-container.customizing.direct

728x90

'Spring > Spring Boot' 카테고리의 다른 글

JPA & PostgreSQL 연동  (0) 2021.09.03
JPA의 Entity  (0) 2021.08.27
JPA의 Entity와 DTO를 구분하여 사용해야하는 이유  (0) 2021.08.20
JPA(Java Persistence API)란  (0) 2021.08.06
Spring Boot MVC Pattern(Service, DAO, DTO, VO)  (0) 2021.07.09

댓글