[Spring] REST API?

siyeong·2022년 6월 27일
0

Spring

목록 보기
4/4


REST (Representational state transfer)

REST는 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 행위를 의미한다.
Http URI를 통해 자원을 명시, Http Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.


REST 구성요소

자원 (Resource)

HTTP URI

행위 (Verb)

Http Method

표현 (Representation)

Http Message Pay Load


REST 특징

Server-Client 구조

서버는 API 제공, 클라이언트는 사용자 인증과 같이 정보를 직접 관리하는 구조로 각각의 역할이 확실하

Uniform Interface

Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일된 인터페이스로 수행하는 아키텍처 스타일을 일컫는다.

Stateless

작업의 상태 정보를 저장, 관리하지 않음을 의미한다. 세션 정보나 쿠키 정보를 따로 저장, 관리하지않기 때문에 서버는 들어오는 요청만 처리한다. 그러므로 서비스의 자유도가 높아지고 서버가 불필요한 정보를 관리하지 않음으로써 구현이 좀 더 단순해진다.

Cacheable

HTTP 프로토콜 표준에서 사용하는 Last-Modified 태그 또는 E-Tag를 이용하여 캐싱 구현이 가능하다.

Layered System

REST서버는 다중 계층으로 구성될 수 있고, 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상 유연하고, 프록시, 게이트웨이와 같은 네트워크 기반의 중심매체를 사용할 수 있도록 한다.


REST API란?

REST 원리를 따르는 API를 의미한다.

REST API 설계 규칙

  1. URI는 동사가 아닌 명사로 작성하며, 소문자를 사용한다.
(X) - http://example.com/Running
(O) - http://example.com/run
  1. URI 마지막에 /를 작성하지 않는다.
(X) - http://example.com/run/
(O) - http://example.com/run

슬래시(/)는 계층 관계를 나타내는 데 사용되며,
URI에 포함되는 모든 글자는 리소스의 유일한 식별자로 사용되어 하므로 URI가 다름은 리소스가 다르다는 것을 의미한다.
때문에 혼동을 예방하기 위해 URI 경로 마지막에 /를 작성하지 않는다.

  1. 밑줄(_) 대신 하이픈(-) 사용
(X) - http://example.com/members_score
(O) - http://example.com/members-score
  1. URI에 파일 확장자를 포함하지 않는다.
(X) - http://example.com/photo.jsp
(O) - http://example.com/photo
  1. URL에 행위를 포함하지 않는다.
(X) - http://example.com/delete-comment
(O) - http://example.com/comment

CRUD Operation

REST에서 행위는 Method의 동작 방식에 따라 구분할 수 있다.
게시판 CRUD를 예로 작성해본다.

CREATE - POST

http://example.com/boards

READ - GET

http://example.com/boards

UPDATE - PUT

http://example.com/boards/1

DELETE - DELETE

http://example.com/boards/1

게시글 생성과 출력이 같은 URI를 가지고 있지만 METHOD의 동작방식에 따라 이루어지는 행위가 다르다.


참고
https://meetup.toast.com/posts/92

profile
siyeong's DevLog

0개의 댓글