REST API 설계하기

Posted by HULIA(휴리아)
2019. 8. 16. 13:04 백엔드개발/스프링부트

REST API

1. 자원(resource) : URI

2. 행위(verb) : HTTP 메서드

3. 표현(representations) : 리소스에 대한 표현(HTTP Message Body)

 

1. URI 설계

URI는 URL을 포함하는 개념입니다

URL이 리소스를 가져오는 방법에 대한 위치라면 URI는 문자열을 식별하기 위한 표준입니다

 

URI는 명사를 사용해야 하며 동사를 피해야 합니다.

모든 경우에 완벽하게 호환되지는 않습니다. 세부적인 동사의 경우 URI에 포함될 수 밖에 없습니다.

가령 모바일 결제라는 REST API를 설계한다고 가정할 경우 OTP발행, 결제 진행, 기타 API 동작에 대해 HTTP메서드만으로는 대응하기 힘듭니다. 앞의 URI 설계에 대한 원칙은 어디까지나 불필요한 동사를 URI에 포함하는 것을 지양해야 한다는 것이지 완전히 배제시킨다는 것은 아닙니다

 

URI에서는 명사에 단수형보다는 복수형을 사용해야 합니다

컬렉션으로 URI를 사용할 경우 컬렉션을 한번 더 감싼 충첨 형식으로 사용하는 것이 종습니다

_embedded:[

   {

    books:....

   },

   {

    stores:....

   },

   {....}

]

 

 

2. 행위 설계

Resource GET(read) POST(create) PUT(update) DELETE(delete)
/books book 목록 보기 해당 book 추가    
/books/1 ID가 1인 book 보기   ID가 1인 book 수정 ID가 1인 book 삭제

/books의 경우 book의 목록을 표현한다는 기본 전제가 깔려 있습니다.

/books 자체가 복수의 book을 의미하므로 books를 게시판에 표현할 때 페이징을 처리하는 값을 추가로 제공할 수도 있습니다.

ex) /books?page=0&size=10&sort=desc

 

page, size, sort 파라미터를 따로 지정하지 않으면 서버에서 기본으로 설정한 값으로 반환됩니다