Uniform Interface(인터페이스 일관성)

김재현·2024년 4월 25일
0

TIL

목록 보기
84/88
post-thumbnail

이전의 REST에 대해 포스팅하며 그 특징 중 하나로 '인터페이스 일관성'에 대해 얘기한 적이 있다.

인터페이스의 일관성을 유지하는 것은 REST 서비스 설계의 기본이다.
'REST의 일관성'이라고 한다면 데이터를 주고받는 형식을 통일시키는 것이 떠오른다.
일종의 약속이랄까? 그렇기 때문에 이것을 지키면 보기 편하다. 즉, 남의 코드라도 해석하기 쉽다.

UI에 대해 전문적인 언어로 정리해보자.

인터페이스 일관성이란?

인터페이스 일관성은 RESTful 서비스가 통신을 위해 사용하는 인터페이스가 일관된 방식으로 설계되어야 함을 의미한다. 이 원칙은 클라이언트와 서버 간의 상호작용을 단순화하고, 시스템의 분리를 가능하게 하여, 각 부분을 독립적으로 개발할 수 있도록 합니다.

줄 글만 보니 감이 안올 수가 있다.
인터페이스 일관성이 잘 유지된 RESTful API의 예시 예시를 함께 보자.

UI를 유지하는 방법

  1. 자원(Resource)의 식별: URI(Uniform Resource Identifier)를 사용하여 자원을 명확하게 식별.
    • 특정 도서 조회: GET /books/{bookId}
  2. 자원에 대한 표현: 클라이언트가 서버로부터 자원의 상태(데이터)를 요청할 때, JSON이나 XML 같은 표준 포맷을 사용하여 데이터를 교환.
    • 클라이언트가 특정 도서 정보를 요청(GET /books/{bookId}) 했을 때의 JSON 응답:
      {
      "id": 1,
      "title": "RESTful API 설계",
      "author": "홍길동",
      "publisher": "IT출판사"
      }
  3. 자기 서술적 메시지(Self-descriptive messages): 요청과 응답 메시지가 자기 자신을 어떻게 처리해야 하는지에 대한 충분한 정보를 포함하고 있어야 한다.
    • Content-Type 헤더를 포함하여, 응답 본문의 형태가 JSON임을 명시: Content-Type: application/json
  4. 상태 전이를 위한 하이퍼미디어(HATEOAS, Hypermedia As The Engine Of Application State): 애플리케이션의 상태는 하이퍼링크를 통해 전이되어야 하며, 클라이언트는 서버의 응답에 포함된 하이퍼링크를 통해 다음 가능한 상태로 전이할 수 있어야 한다.
    • {
        "id": 1,
        "title": "RESTful API 설계",
        "author": "홍길동",
        "publisher": "IT출판사",
        "links": [
          {
            "rel": "reviews",
            "href": "/books/1/reviews"   // <--
          },
          {
            "rel": "purchase",
            "href": "/books/1/purchase"   // <--
          }
        ]
      }

장점

  1. 가독성과 이해성 향상: 학습 곡선을 낮추고 개발 과정을 가속화.

  2. 재사용성 증가: 개발 시간과 비용을 절감.

  3. 통합 용이성: 다른 시스템이나 서비스와의 통합이 용이. 다른 시스템과의 연동이 더 쉽고, 통합 작업 시 필요한 작업량이 줄어든다.

  4. 확장성: 서비스가 성장하고 변화해도, 기존 클라이언트를 크게 변경하지 않고도 새로운 기능을 추가하거나 기존 기능 개선 가능.


UI는 개발자라면 당연하게 지켜야 하는 것인 만큼 굉장히 익숙하다.

그렇지만 UI가 깨져서 RESTful하지 않는다면, 아무리 기능이 좋더라도 눈살이 찌푸려질 것 같다.

항상 고민하고 더 나은 것을 만들어보자!

출처

관련 포스팅

profile
I live in Seoul, Korea, Handsome

0개의 댓글