Java/Spring

[Spring] Rest vs RestAPI

SeungbeomKim 2022. 11. 23. 04:12
반응형

Rest란 무엇인가? 

Representational State Transfer라는 용어의 약자이다.

자원을 URI로 표시하고 현재 자원에 대한 상태를 주고 받는 것이다.

클라이언트는 HTTP URI를 통해서 자원을 구별하고, URI를 통해 서버에 요청을 보낸다.

클라이언트와 서버간의 통신 방식 중 하나이다.

REST의 구성 요소 : 자원(Resource), 행위 : HTTP METHOD(GET, POST, UPDATE, DELETE) 표현으로 이루어져있다. 표현(verb)

 

다음과 같이 클라이언트는 서버측에 요청을 보낼때, HTTP URI를 통해 자원을 구별한다.   

@PostMapping("/users/{userId}/boards")

 

그러면 Restful은 무엇일까?

Rest와 동일하지만, 기존 Rest보다 더욱 이해하기 쉽고 가독성 좋게 보이기(또한 설계 규칙을 잘 지켜야 한다) 위한 Rest API를 설계하는 것이다.

 

Restful API 설계를 위한 규칙 6가지

  • 소문자를 사용한다.
  • 언더바를 대신 하이픈을 사용한다.
  • 마지막에 슬래시를 포함하지 않는다.
  • 행위는 포함하지 않는다.
  • 파일 확장자는 URI에 포함시키지 않는다.
  • 가급적 전달하고자하는 자원의 명사를 사용하되, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 허용한다.

 

 

1. 소문자를 사용한다.

@DeleteMapping("/boards/{boardId}") (o)
@DeleteMapping("/Boards/{BoardId}") (x)

2. 언더바 대신 하이픈을 사용한다.

 

post-hashtag(o), post_hashtag(x)

 

3. 마지막에는 슬래시를 포함하지 않는다.

 

@GetMapping("/me") (o) 
@GetMapping("/me/")(x)

 

4. 행위는 포함하지 않는다.

@DeleteMapping("/boards/{boardId}") (o)
@DeleteMapping("/boards/delete/{boardId}") (x)

5. 파일 확장자 jpg, jpeg, pdf등은 urI 포함 x

 

6. 컨트롤 자원의 경우, 이례적으로 허용한다. (crud 제외 모든 동사 허용)

반응형