728x90

Web

HTTP(Hypertext Transfer Protocol)

  • HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리케이션 레이어 프로토콜

URI(Uniform Resource Identifier)

  • 특정 리소스를 식별하는 통합 자원 식별자

HTML(Hyper Text Markup Language)

  • 하이퍼 미디어를 표현하기 위한 언어

 


REST(Representational State Transfer)

  • Client - Server
    • Client : 데이터를 사용자에게 표시하거나 이에 대한 후속 작업을 처리한다.
    • Server : 데이터를 저장 및 조작하고 효율적인 방식으로 클라이언트에게 제공한다.
  • Stateless
    • 모든 정보는 요청을 통해서만 이루어지며 요청에 대한 정보는 서버에 저장하지 않는다.
  • Cache
    • 클라이언트는 서버의 응답을 임시저장한다.
  • 계층화
    • 클라이언트와 서버 사이에 방화벽, 게이트웨이, 프록시 등 중간 계층을 두어 컴포넌트의 독립성을 확보한다.
  • 인터페이스 일관성
    • 아키텍처를 단순화시켜, 컴포넌트 간의 상호작용을 효율적으로 한다.
  • Code on Demand(Optional)
    • 클라이언트 기능 확장을 위한 코드를 서버로 부터 전달받아 코드를 실행한다.

 

REST 판단

  • 자원의 식별
    • 웹 기반의 REST에서는 리소스 접근 시, URI를 사용한다. 
    • https://rest.co.kr/user/100
  • Resource : user
  • Identifier : 100

 

  • 메시지를 통한 리소스 조작
    • 다양한 방식으로 데이터를 전달한다.
    • (Ex. HTML, XML, JSON, TEXT)
    • HTTP Header 부분에 content-type을 명시하여 데이터의 타입을 지정하기도 한다.

 

  • 자기 서술적 메시지
    • HTTP 기반 REST에서는 HTTP Method, Header 정보, URI에 포함되는 정보로 표현한다.

 

  • 애플리케이션 상태에 대한 엔진으로써 하이퍼미디어
    • REST API를 개발할 때 단순히 Client 요청에 대한 데이터만 응답하는 게 아닌 관련 리소스에 대한 링크 정보까지 포함해야 한다.

 


URI 설계 패턴

URI(Uniform Resource Identifier)

  • 인터넷에서 특정 자원을 나타내는 주소 값
  • 값 자체는 유일하다.
    • 응답은 달라질 수 있음

URL(Uniform Resource Locator)

  • 인터넷 상에서 자원, 특정 파일이 어디에 위치하는지 식별 하는 주소
    • ⭐️ URL은 URI의 하위 개념이다!
    • 일상적으로 웹사이트 도메인을 말하는 경우는 URL 이라 한다.

 

URI 설계 원칙(RFC-3986)

  • / 슬래시 구분자는 계층 관계를 나타내는 데 사용한다.
  • URI 마지막 문자에 /는 포함하지 않는다.
  • 하이픈(-)은 URI 가독성을 높이는데 사용한다.
  • 밑줄(_) 은 사용하지 않는다.
  • URI 경로에는 소문자를 사용한다.
  • 파일 확장자는 URI에 포함하지 않는다.
  • 프로그래밍 언어에 의존적인 확장자를 사용하지 않는다.
  • 구현에 의존적인 경로를 사용하지 않는다.
  • 세션 ID를 포함하지 않는다.
  • 프로그래밍 언어의 Method 명을 이용하지 않는다.
  • 명사에 단수형보다는 복수형을 사용해야한다.
  • 컨트롤러 이름으로는 동사나 동사구를 사용한다.
  • 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
  • CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.
  • API에 있어서 서브 도메인은 일관성 있게 사용해야 한다.

 


HTTP(Hyper Text Transfer Protocol)

  • TCP를 기반으로 한 REST의 특징을 모두 구현하고 있는 Web 기반의 프로토콜
  • Request - Response 형태의 통신 방법

 

HTTP Method

wikipedia.org

 


Reference

728x90