나의개발일지

Spring) RestAPI 본문

Back-End/Spring

Spring) RestAPI

아. 이렇게 하면 될거 같은데.. 2024. 4. 24. 01:27
728x90



REST API 개요

OPEN API

  • OPEN API는 프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 Interface
  • naver, kakao 포털 서비스 사이트나 관공서, 공공데이터 포털이 가지고 있는 데이터를 외부 응용 프로그램에서 사용할 수 있도록 OPEN API를 제공하고 있다
  • OPEN API 지원 방식이 REST 이다

 

REST

  • REST는 하나의 URL는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다.
  • 웹의 장점을 최대한 활용할 수 있는 아키테처로써 REST를 발표
  • HTTP URL을 통해 제어할 자원을 명시하고 HTTP Method(GET, POST, PUT, DELETE)을 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍처

 

REST 구성

  • 자원 - URI
  • 행위 - HTTP Method
  • 표현

잘 표현된 HTTP URI로 리소스를 정의하고 HTTP method로 리소스에 대한 행위를 정의한다.

리소스는 JSON, XML과 같은 여러 가지 언어로 표현할 수 있다.

 


기존 Service와 REST Service

  • 기존 Service : 요청에 대한 처리를 한 후 가공된 data를 이용하여 특정 플랫폼에 적합한 형태의 View로 만들어서 반환
  • REST Service : data 처리만 한다 거나. 처리 후 반환될 data가 있다면 JSON이나 XML형식으로 전달. View에 대해서는 신경 쓸 필요가 없다.
  • 그러므로 데이터를 주고 받기가 쉬워졌다.

 

REST

  • 기존의 전송방식과는 달리 서버는 요청으로 받은 리소스에 대해 순수한 데이터를 전송한다
  • 기존의 GET/POST 외에 PUT, DELETE 방식을 사용하여 리소스에 대한 CRUD를 처리할 수 있다.
  • HTTP URI를 통해 제어할 자원을 명시하고, HTTP METHOD( GET/ POST/ PUT/ DELETE )를 통해 해당 자원을 제어하는 명령을 내리는 방식의 Architecture이다.
  • 자원을 표현할 때 Collection( 문서, 객체의 집합) 과 Document (하나의 문서, 객체) 사용
  • 가장 큰 단점은 딱 정해진 표준이 없다

 

기존의 웹 접근 방식과 REST API의 차이점

작업 기존방식 REST방식 비고
Create POST /blog [action=write&id=admin] POST /blog/admin 글쓰기
Read GET /blog?action=view&id=admin&articleno=25 GET /blog/admin/25 글읽기
Update POST /blog [action=modify&id=admin] PUT /blog/admin 글수정
Delete GET /blog?action=delete&id=admin&articleno=25 DELETE /blog/admin/25 글삭제

 

기존의 블로그등은 GET과 POST만으로 자원에 대한 CRUD를 처리하며, URI는 액션을 나타냈다.

REST로 변경할 경우 4가지 method를 모두 사용하여 CRUD를 처리하며, URI는 제어하려는 자원을 나타낸다.

 

REST 관련 Annotation

Annotation Description
@RestController Controller 가 REST 방식을 처리하기 위한 것임을 명시
@ResponseBody JSP 같은 뷰로 전달되는 것이 아니라 데이터 자체를 전달
@PathVariable URL 경로에 있는 값을 파라미터로 추출
@CrossOrigin Ajax의 크로스 도메인 문제를 해결
@RequestBody JSON 데이터를 원하는 타입으로 바인딩
728x90
반응형

'Back-End > Spring' 카테고리의 다른 글

Spring) Spring Data JPA  (0) 2024.07.03
Spring) Mybatis  (2) 2024.04.23
Spring) Interceptor  (0) 2024.04.19
Spring) AOP  (0) 2024.04.17
Spring) DI 의존성 주입  (0) 2024.04.15