개발 일반

REST-API의 한계

민초부 2022. 5. 23. 20:30
반응형

> 막연하게 백엔드 개발자를 시작하며 API 개발을 시작했고 그 안에서 REST API에 최대한 맞춰 개발을 하고자 했었다. 

    그리고 GraphQL이 프론트쪽에서 핫하다고 하면서 본 내용 중 Rest API의 고질적인 문제점을 보는데 이게 딱 지금 내가 개발하는 API의 문제점이라 생각하고 있는 것들과 겹쳐서 기술한다. 

    = 즉 특정 화면에서의 내가 지금 머리아파는 문제를 GraphQL로 해결 가능할 수도 있다.

 

REST API의 문제 (Over-fetching, Under-fetching)

  1. Over fetching : 말 그대로 불필요한 데이터까지 API 결과값에 포함되어 return되는 것을 말한다.
    • 최근 내가 쉽다 API 리팩토링 한 내용 중 하나가 이러한 문제들 때문에 return interface를 확립하여 그렇게 return하게 처리한 것과 연관되어 있다.
    • 어드민 API야 불필요한 데이터까지 가도 상관은 없는데 고객 화면이 호출하는 API는 확실하게 하지 않으면 margin이나 불필요한 UNIPASS 정보까지 return되면 좋을 것이 없다 생각하여 리팩토링 했었음.
    • class constructor를 통해 할당하거나 select를 통해 해당 값만 select하여 바로 return하는 방식으로 하였다. 
      (join되는 column이 많은 경우, 값도 많은 경우 select으로 따로 값을 관리하며 처리하였음)
    • 이렇게 하면 해결은 되지만 불가피하게 코드는 길어질 수 밖에 없고 필요한 그 값들이 많으면 많을수록 더 길어진다.
  2. Under fetching : 반대로 필요한 데이터가 전부 들어오지 않아 다른 API를 여러번 호출해야하는 문제
    • 이렇게 하면 서버 request도 불필요하게 늘어난다.
    • 그럼 이걸 API를 하나로 합쳐서 한번에 호출하면 되는거 아니야? 하지만 보통 이런 문제가 발생하는  곳은 그 API를 다른 곳에서 사용하고 있고 딱 그 값만 필요한 경우로 만든 것이기 때문에 이걸 하나로 합치면 Under-fetching문제는 해결되겠지만 사용하던 다른 곳에서는 불필요한 데이터까지 return되면 Over-fetching문제가 발생하게 된다.
반응형