본문 바로가기
First step/web depeloper step1

RESTful API

by Joshua21 2021. 12. 3.

REST하다는 것은 무엇일까?

REST(REpresentational State Transfer)란 웹에 존재하는 모든 자원(resorce, ex. 이미지, 동영상, 데이터)에 고유한 URI를 부여하여 자원에 대한 주소를 지정하는 방법론, 또는 규칙입니다. 현재 가장 널리 사용되고 있습니다.

 

url 은 page 기준이 아닌 resource 기준으로 작성합니다.

메인 페이지에 표출되어야할 정보가 무엇인지 판별하여 url을 정합니다.

한 번에 여러 종류의 정보를 표출해야 한다면, 프론트엔드 개발자와 협의하여 REST에 맞춰 두가지 이상의 endpoint를 동시에 호출합니다.

동사를 사용하지 않습니다.

자원을 추가(add)할 때는 ~/post 만으로 충분합니다.

검색 기능은 자원의 정보를 호출하는 기능이므로 [GET] method를 사용합니다.

검색 키워드는 body를 통해 전달하지 않고, query string을 활용합니다.

 

Query parameters

웹 페이지의 url 주소를 자세히 보면 종종 ? 가 포함되어 있는 것을 보셨을 것입니다. 이 물음표는 단순한 문자열이 아닙니다. 특정한 기능을 수행하고 있죠. 물음표 뒤에는 늘 key=value 형식의 문자열이 따라옵니다. 이를 Query parameter 라고 부릅니다.

주로 데이터를 조건으로 거르거나(filtering), 특정 방식으로 정렬하거나(sorting), 검색(searching)하고자 하는 경우에 활용됩니다.

 

Path parameters

쿼리 파라미터와 유사해보이지만 그 역할이 완전히 다른 Path parameter도 있습니다. 해당 리소스에 더 자세한 정보를 얻기 위해 접근할 때 사용합니다.

 

 

API 또는 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)는 애플리케이션 소프트웨어를 구축하고 통합하는 정의 및 프로토콜 세트입니다. 때때로 API는 정보 제공자와 정보 사용자 간의 계약으로 지칭되며 소비자에게 필요한 콘텐츠(호출)와 생산자에게 필요한 콘텐츠(응답)를 구성합니다.컴퓨터나 시스템과 상호 작용하여 정보를 검색하거나 기능을 수행하고자 할 때 API는 사용자가 원하는 것을 시스템에 전달할 수 있게 지원하여 시스템이 이 요청을 이해하고 이행하도록 할 수 있습니다.API를 사용자 또는 클라이언트, 그리고 사용자와 클라이언트가 얻으려 하는 리소스 사이의 조정자로 생각하면 됩니다. API는 조직이 보안 및 제어를 유지관리(누가 무엇에 액세스할 수 있는지 결정)하면서 리소스와 정보를 공유할 수 있는 방법이기도 합니다.

API의 또 다른 이점은 리소스 검색 방법 또는 리소스의 출처에 대한 지식 없이도 사용이 가능하다는 점입니다.

 

 

API가 RESTful로 간주되려면 다음 기준을 따라야 합니다.

  • 클라이언트, 서버 및 리소스로 구성되었으며 요청이 HTTP를 통해 관리되는 클라이언트-서버 아키텍처
  • 스테이트리스(stateless) 클라이언트-서버 커뮤니케이션: 요청 간에 클라이언트 정보가 저장되지 않으며, 각 요청이 분리되어 있고 서로 연결되어 있지 않음
  • 클라이언트-서버 상호 작용을 간소화하는 캐시 가능 데이터
  • 정보가 표준 형식으로 전송되도록 하기 위한 구성 요소 간 통합 인터페이스. 여기에 필요한 것은 다음과 같습니다.
    • 요청된 리소스가 식별 가능하며 클라이언트에 전송된 표현과 분리되어야 합니다.
    • 수신한 표현을 통해 클라이언트가 리소스를 조작할 수 있어야 합니다(이렇게 할 수 있는 충분한 정보가 표현에 포함되어 있기 때문).
    • 클라이언트에 반환되는 자기 기술적(self-descriptive) 메시지에 클라이언트가 정보를 어떻게 처리해야 할지 설명하는 정보가 충분히 포함되어야 합니다.
    • 하이퍼미디어: 클라이언트가 리소스에 액세스한 후 하이퍼링크를 사용해 현재 수행 가능한 기타 모든 작업을 찾을 수 있어야 합니다.
  • 요청된 정보를 검색하는 데 관련된 서버(보안, 로드 밸런싱 등을 담당)의 각 유형을 클라이언트가 볼 수 없는 계층 구조로 체계화하는 계층화된 시스템.
  • 코드 온디맨드(선택 사항): 요청을 받으면 서버에서 클라이언트로 실행 가능한 코드를 전송하여 클라이언트 기능을 확장할 수 있는 기능. 

참고한 사이트 :https://www.redhat.com/ko/topics/api/what-is-a-rest-api