스프링/스프링 부트(Spring boot)

Restful 의 의미 및 Restful 설계

낙산암 2021. 12. 29. 22:02

1. Restful(Representational State Transfer) API

웹에 존재하는 모든 자원에 고유한 URI를 부여해 활용하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다. 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념에 전송방식을 경합해서 원하는 작업을 지정한다. 

 

 

RESPT API란 REST의 원리를 따르는 API를 의미합니다.

하지만 REST API를 올바르게 설계하기 위해서는 지켜야 하는 몇가지 규칙이 있으며 해당 규칙을 알아 보겠습니다.

REST API 설계 예시

1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.

Bad Example http://khj93.com/Running/
Good Example  http://khj93.com/run/  

 

2. 마지막에 슬래시 (/)를 포함하지 않는다.

Bad Example http://khj93.com/test/  
Good Example  http://khj93.com/test

 

3. 언더바 대신 하이폰을 사용한다.

Bad Example http://khj93.com/test_blog
Good Example  http://khj93.com/test-blog  

 

4. 파일확장자는 URI에 포함하지 않는다.

Bad Example http://khj93.com/photo.jpg  
Good Example  http://khj93.com/photo  

 

5. 행위를 포함하지 않는다.

Bad Example http://khj93.com/delete-post/1  
Good Example  http://khj93.com/post/1  

 

스프링 에서의 REST API

 

REST는 Reoresentational State Transfer의 약어로 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념에 전송방식을 결합해 원하는 작업을 지정한다.

예를 들어 /board/123은 게시물 중에서 123번이라는 고유 의미를 가지도록 설계하고 이에 대한 처리를 GET, POST 등으로 결정한다.

 

ResponseEntity<String> 객체

@RestController : Controller가 REST 방식을 처리하기 위한 것임을 명시

@ResponseBody : 일반적인 JSP와 같은 뷰로 전달되는 게 아니라 데이터 자체를 전달하기 위한 용도

@PathVariable : URL 경로에 있는 값을 파라미터로 추출할 때 사용

@CrossOrigin : Ajax의 크로스 도메인 문제를 해결해주는 어노테이션

@RequestBody : JSON 데이터를 원하는 타입으로 바인딩 처리

 

이제는 RESTful 로 게시판으로 만들어 보자.

 

JD Method Rest URI 기존 URI
게시판 전체 조회 GET /board /list
게시판 컨텐츠 조회(1개조회) GET /board/{bid} /content_view
게시판 글 생성 POST /board /write
게시판 글 수정 PUT /board/{bid} /moderfiy?bid=100
게시판 삭제 DELETE /board/{bid}