Backend/공통

REST API, RESTful API

Dean83 2025. 9. 19. 11:46

REST API는 REST 제약 조건의 일부를 따르는 것이고, RESTful 은 보다 제약조건을 잘 따라서 개발한 경우이다. 

 

1. 제약조건

  • 클라이언트-서버 구조로서, 서버의 내부 변경점이 클라이언트에 영향을 미치지 않는다.
  • 무상태성 으로서 이전 요청의 내용을 저장하지 않고, 각 요청은 개별로서 동작 할 수 있다.
    • 그러나, 이것을 완벽히 지키지 않고 토큰, 세션 등으로 처리하는게 일반적이다. 
  • 캐시를 두어 서버의 부하를 줄일 수 있다.
  • URI 규칙을 잘 따른다.
    • API 주소에 Method 정보를 넣지 않는다. (예 : /getUser -> GET 요청, /user)
      • URI는 명사 위주로 작성한다 (예 : users,items ....)
      • 단계별로 설정한다. (예 : users/아이디 ....)
      • 행위는 POST, GET 등 http 메소드로 표현하여 처리한다.
      • 비즈니스 로직 상 계층 구조가 있다면, 단계별로 표현한다. (예 : /users/아이디/profiles/프로필)
    • 같은 항목에 대해서는 일관되게 리턴해야 한다.
      • 예 : /user 와 /users 의 각 user에 해당하는 항목은 동일해야 한다.
  • 계층화
    • 서버 앞에 로드벨런서, 게이트웨이 등이 붙어도, 서버 운영에 영향이 없다.

2. RESTful API 인가 평가 기준

  • 모든 항목들을 다 지킬 수는 없고, 보통 Richardson 성숙도 레벨 2 정도 까지 반영하면 된다.
    • level 0 : http 통신만 구현한 경우
    • level 1 : URI를 구현하여 통신하는 경우
    • level 2 : http 메서드, 상태코드, 헤더 등을 이용한다. 특히 URI 규칙을 잘 따라야 한다. 

 

** URI, URL

  • URI
    • 더 큰 개념이다. 
    • 자원을 식별 하기 위한 문자열로서, 예를들어 /user 같이 정의하는것을 말한다.
  • URL
    • URI에 속한 일부 개념으로, 실제 주소를 의미한다. 
    • 예를들어 위에 명시한 /user 의 경우, 실제 주소는 http://localhost/user 가 될 수 도 있고, http://111,222.333.44/user 가 될 수도 있다.