RESTful API란 무엇인가요?

RESTful API는 두 컴퓨터 시스템이 인터넷을 통한 정보를 안전하게 교환하기 위해 사용하는 인터페이스이다. 대부분의 애플리케이션들은 다양한 기능을 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야 한다. 이런 통신 및 정보 교환을 위해 RESTful API를 사용하고, RESTful API는 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따른다.

 

API란 무엇인가요?

애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)는 다른 소프트웨어 시스템과 통신하기 위해 따르는 규칙을 정의한다. 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 생성한다. 웹 API는 클라이언트(사용자)와 웹 리소스(데이터, 정보) 사이의 게이트웨이라고 생각할 수 있다.

 

REST란 무엇인가요?

REST(Representational State Transfer)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다. REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다. 따라서 REST 기반 아키텍처를 사용하면 대규모의 고성능 통신을 안정적으로 지원할 수 있다. 또한 쉽게 구현하고 수정할 수 있고, 여러 플랫폼에서 사용할 수 있다.

 

  1. HTTP URL을 통해 자원(resource)을 명시하고,
  2. HTTP Method(GET, POST, PUT, DELETE 등)을 통해
  3. 해당 자원(URL)에 대한 CRUD(Create, Read, Update, Delete) Operation을 적용하는 것을 의미한다.

 

즉, REST는 웹에 존재하는 모든 자원(이미지, 동영상, DB정보 등)에 고유한 URL을 부여해 활용하는 방식이다.

 

REST 아키텍처 스타일에 따른 API를 REST API라고 하고,

REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 한다.

 

REST 구성

  • 자원(Resource) : URL
  • 행위(Verb) : HTTP Method
  • 표현(Representations)

 

REST 아키텍처 원칙

    1. 균일한 인터페이스 (uniform interface)

HTTP 표준에만 따른다면 웹 또는 모바일 플랫폼이나 언어, 기술에 상관없이 균일한 인터페이스로 사용할 수 있다.

URL로 지정한 리소스에 대해 조작이 가능하다.

 

    2. 무상태 (stateless)

작업을 위한 상태 정보를 따로 저장하고 관리하지 않는다. 세션이나 쿠키 정보를 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만 처리한다.

 

    3. 캐시 가능성 (cacheable)

서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 캐싱을 지원한다. RESTful 웹 서비스는 캐시 가능 또는 캐시 불가능으로 정의되는 API 응답을 사용하여 캐싱을 제어한다.

 

    4. 계층화 시스템 (layered system)

다층 계층으로 구성되어 있어 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상 유연성을 둘 수 있고, 프록시, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있다.

클라이언트는 클라이언트와 서버 사이의 다른 승인된 중개자에게 연결할 수 있다. 서버는 요청을 다른 서버에 전달할 수 있다. 보안, 비즈니스 로직 등 여러 서버에서 실행될 수 있도록 웹 서비스를 설계할 수 있다.

 

    5. 클라이언트-서버 구조 (client-server)

클라이언트와 서버는 역할을 분리하여 상호 의존성을 줄였다. 클라이언트는 사용자 인증, 상태 관리와 서버 리소스 요청을 책임지고, 서버는 API, 비즈니스 로직, 데이터 저장을 책임진다.

 

RESTful API 장점

    1. 확장성

REST API는 무상태, 캐시 등의 기능을 통해 클라이언트-서버 상호 작용을 최적화하고, 통신 병목 현상을 일으키지 않으면서 확장성을 지원한다.

 

    2. 유연성

REST API는 클라이언트-서버 분리를 지원한다. 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단순화하고 분리한다. 서버 애플리케이션을 변경해도 클라이언트 애플리케이션에 영향을 주지 않는다.

 

    3. 독립성

REST API는 클라이언트와 서버를 명확하게 분리한다. API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 작성할 수 있고, 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경할 수 있다.

 

RESTful API 작동 방식

  1. 클라이언트가 서버에 요청한다. 클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정한다.
  2. 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 있는지 확인한다.
  3. 서버가 요청을 수신하고 내부적으로 처리한다.
  4. 서버가 클라이언트에 응답(요청한 모든 정보)을 보낸다. 응답에는 요청이 성공했는지 여부도 포함된다.

 

RESTful API 인증 방법

  1. HTTP 인증: 기본 인증(사용자 이름과 암호), 전달자 인증(전달자 토큰)
  2. API 키
  3. OAuth: 암호와 토큰 결합

 

RESTful API 클라이언트 요청 포함 사항

  1. 고유 리소스 식별자: URL
  2. 메서드: GET, POST PUT, DELETE 등
  3. HTTP 헤더

 

HTTP 메서드

  • POST : 현재 리소스(Collection)보다 한 단계 아래의 리소스(Document) 생성
  • GET : 현재 리소스(Collection, Document)를 조회
  • PUT : 현재 리소스(Document)의 정보 수정 (해당 자원의 전체를 수정)
  • DELETE : 현재 리소스(Document)를 삭제
  • PATCH : 현재 리소스(Document)를 수정 (해당 자원의 일부를 수정)

 

RESTful API 서버 응답 포함 사항

  1. 상태 포시줄: 200, 201, 400, 404 등
  2. 메시지 본문: XML, JSON, RSS
  3. 헤더: 헤더 또는 메타데이터

 

응답 코드

  • 1xx : 전송 프로토콜 수준의 정보 교환
  • 2xx : 클라어인트 요청이 성공적으로 수행
  • 3xx : 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함
  • 4xx : 클라이언트의 잘못된 요청
  • 5xx : 서버쪽 오류로 인한 상태코드

 

 

 

참고자료

https://aws.amazon.com/ko/what-is/restful-api/

https://meetup.nhncloud.com/posts/92

https://brainbackdoor.tistory.com/53

하나의 웹 사이트를 만들기 위해서는 여러 단계의 과정이 필요하다.

개발자의 관점에서 웹 사이트 기획부터 배포까지의 단계를 간단하게 설명한다.

 

  • 기획

기획자는 클라이언트의 요청에 의해 요구사항 및 필요한 기능을 정리한다.

사이트맵 작성 - 화면 설계 - 화면별 프로세스 설계 - 데이터베이스 설계

 

  • 디자인

기획자가 작성한 기획서를 바탕으로 디자이너는 레퍼런스 수집과 웹 사이트 시안을 만든다.

보통 메인 페이지와 서브 페이지 1종 시안을 만든 후, 클라이언트의 확인은 받는다.

 

  • 퍼블리싱

디자인 시안이 확정된 후, 퍼블리셔나 프론트앤드 개발자가 HTML, CSS, Jacascript로 html 파일을 만든다.

디자인 시안이 실제 웹 사이트에서 어떻게 보여지는지 확인한다.

 

  • 데이터베이스 설계 및 API

백앤드 개발자는 기획서의 요구사항에 맞춰 데이터베이스(MySQL, PostgreSQL, MariaDB, oracle 등)를 설계하고, 

GET, POST, PUT, DELETE, PATCH 등을 통해서 웹 브라우저와 웹 서버 간에 통신을 가능하게 해 준다.

 

User Data
account title
password content
name create_at
... ...

 

  • 바인딩

퍼블리싱, 데이터베이스, API 구축까지 끝나면 프론트앤드 개발자가 웹 브라우저와 웹 서버를 연결해 주는 작업을 한다.

마크업이 아닌 실제 데이터가 웹 브라우저에 보이게 된다.

 

  • 서버 및 도메인

인프라 개발자는 클라이언트의 요청에 따라 서버(aws, 가비아 등)와 도메인(url)을 구성한다.

 

  • 배포

인프라 개발자는 사용자가 실제 웹 사이트를 이용할 수 있게끔 깃 배포 자동화, FTP 등을 통해서 배포한다.

'기타 개념' 카테고리의 다른 글

REST, REST API, RESTful API란?  (0) 2023.06.08
[Node] NVM으로 노드(Node.js) 버전 관리하기  (0) 2023.04.20

프로젝트를 진행하다 보면 여러 개발 환경을 세팅해야 할 때가 있다.

그중 노드 버전을 변경해야 할 때가 있는데 NVM(Node Version Manager)을 사용하면 상황에 맞게 원하는 버전으로 노드를 설치하거나 변경할 수 있다.

 

1. nvm 설치하기

https://github.com/coreybutler/nvm-windows/releases

 

Releases · coreybutler/nvm-windows

A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows

github.com

위의 사이트에서 nvm-setup.exe 파일을 다운받아 설치한다.

터미널에서 nvm -v를 하면 설치된 버전을 확인할 수 있다.

 

2. nvm install 버전

원하는 버전의 노드를 설치한다.

nvm list 명령어로 설치된 노드 버전을 확인할 수 있고,

nvm list available 명령어로 설치 가능한 노드 버전을 확인할 수 있다.

 

3. nvm use 버전

원하는 버전의 노드로 변경한다.

 

※주의※
node를 실행 파일로 설치한 경우, nvm으로 node 버전이 안 바뀔 수 있다.
이 때는 제어판에서 node를 삭제한 후, nvm을 설정한다.

 

'기타 개념' 카테고리의 다른 글

REST, REST API, RESTful API란?  (0) 2023.06.08
웹 개발 프로세스 - 기획부터 배포까지  (0) 2023.05.22

+ Recent posts