본문 바로가기

Back-end

[REST API]REST API란?

반응형

API란?

Application Programming Interface

API는 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트이다.
내부의 구현 사항을 모두 드러내지않고 사용자가 필요한 부분만 노출해주는 것을 말한다.
API를 사용하면 구현 방식을 알지 못해도 제품 또는 서비스가 서로 커뮤티케이션할 수 있으며 애플리케이션 개발을 간소화하여 시간과 비용을 절약할 수 있다.

REST란?

Reqresentational State Transfer

REST는 HTTP에서 필요한 자원에 접근할 때 웹의 장점을 최대한 활용하기 위한 아키텍처이다.

REST 아키텍처에 적용되는 가지 제한 조건

  1. 인터페이스 일관성 : 일관적인 인터페이스로 분리되어야 한다.
  2. 무상태 : 각 요청 간 클라이언트의 context, 세션과 같은 상태 정보를 서버에 저장하지 않는다. 요청마다 분리되어서 처리되어야 한다.
  3. 캐시 처리 가능: 클라이언트는 응답을 캐싱할 수 있어야 합니다. 캐시를 통해 대량의 요청을 효율적으로 처리할 수 있다.
  4. 계층화: 클라이언트는 대상 서버에 직접 연결되어있는지, 중간 서버를 통해서 연결되었는지 알 수 없다. 중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시키는 데 유용하다.
  5. Code on demand(optional): 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트를 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
  6. 클라이언트/서버 구조: 아키텍처를 단순화시키고 작은 단위로 분리함으로써 클라이언트-서버의 각 파트가 독립적으로 구분하고 서로간의 의존성을 줄인다.

REST API의 구성요소

  1. HTTP Method
    • GET: 데이터 조회
    • POST: 새로운 데이터 추가
    • PUT: 데이터 전체 수정
    • PATCH: 데이터 일부 수정
    • DELETE: 정보 삭제
  2. URL - 데이터 접근(데이터마다 접근할 수 있는 고유의 URL이 존재해야한다.)
  3. Representation - 자원의 표현(URL만으로 어떤 자원을 제공하는지 표현해야한다. 잘 만들어진 API는 URL만 보더라고 API를 어떻게 사용해야하는지 대충 알 수 있다.)

REST API의 자원 표현을 위한 URL 설계 규칙(권장사항)

  1. 소문자만 사용한다.
  2. 언더바(_)는 쓰지 않고, 필요시 하이픈(-)을 쓰되 지양한다.
  3. 확장자를 표시하지 않는다.
  4. 마지막에 슬래시를 포함하지 않는다.
  5. 행위는 포함하지 않는다.
  6. 가급적 전달하고자하는 자원의 명사를 사용하되, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 허용한다.

VS CODE에서 REST API 사용해보기

VS CODE에서 REST API를 사용해 볼 수 있는 확장 프로그램(REST Client)이 있다고 해서 googlebooksAPI를 VS CODE에서 한번 사용해보았다.

  1. 확장 프로그램 REST Client를 설치한다.
  2. .http 확장자로 파일을 생성한다.
  3. 원하는 메소드와 URL을 작성후 Send Request를 누른다.(###으로 다른 Request를 작성할 수 있다.)
  4. Response를 확인한다.

참고사이트

  1. 드림코딩 by 엘리 API란? 개념 정리와 포트폴리오에 유용한 대박 사이트 공유 🙌
  2. 퉁퉁코딩 TungTungCoding [API]3. REST API개념, 구성요소, URL설계규칙, REST Client, API사용 실습
  3. REST API에 대한 설명과 제한 조건
반응형

'Back-end' 카테고리의 다른 글

Slack으로 OAuth 사용하기  (0) 2022.10.31
[HTTP] 응답 상태 코드 정리  (0) 2021.09.14
[WEB] HTTPS와 SSL인증서  (0) 2021.08.29
[WEB] HTTP 정리  (0) 2021.08.29
Android Studio + Node.js + MySQL 프로젝트 파일 구조  (0) 2021.08.22