web

API는 어떻게 나누어야할까?

datajoy 2020. 6. 20. 23:47

개 요

API 설계를 하다보면 API 상세하게 분리하여 관리할지? 통합하여 관리할지? 고민이 되는 순간이 온다.

각각의 장단점이 있으며, 상황에따라서 분리하거나 통합하여 사용하자.

 

API 분리란

API 분리는 모든 요청의 단위를 나누어서 URI로 구분하여 사용하는것이다.

예를들어, 글을 쓰는 API를 조회한다고하자. 이때, 여러 권한별로 글쓰는 로직이 다를 경우, 각 권한별로 글쓰는 API를 URI로 구분하여 분리하는 것이다. 관리자가 글쓰는 API, 직원이 글쓰는 API, 모든단위를 나누어 관리하는것이다.

장점으로는, URI를 직관적으로 관리가 가능하고 로직을 API별로 분리하여 관리하기때문에 영향도를 줄일 수 있다.

하지만, 이렇게 API를 나누어 관리하게되면 프론트엔드 입장에서는 여러 API를 호출해서 데이터를 맵핑하는 작업을해야하기때문에 매우 번거로우며, 나중에는 어떤 API가 무슨역할을 하는지 잊어버릴때가 있다.

 

API를 통합하면

API 개수가 줄어들면 줄어들수록 프론트엔드 개발자와 커뮤니케이션 누수를 줄일 수 있다.

이러한 문제를 해결하기위해서는 최대한 API를 통합하고, 파라미터로 구분자를 요청받아 로직을 구분하자.

글쓰기 API 하나만 생성하고 파마미터로 관리자인지, 직원인지 구분자를 요청받아서 로직을 나누어 개발하는것이다.

프론트엔드와 협업 시 커뮤니케이션 누수를 줄일 수 있기때문에 복잡하지 않게 개발이 가능하다는 장점이 있다.

 

어떤방법을 써야할까

두 방법 중 상황마다 쓰는것이 다르기때문에 설계단계에서 상황을 분석하고 통합할지 분리할지 판단하여 개발하자.