본문 바로가기

클라우드/클라우드 프로젝트

[ 클라우드 프로젝트 ] REST API

 

 

 

 

Interface

 

  • 인터페이스는 서로 다른 두개의 시스템, 장치 사이에서 상호간의 소통을 위한 접점
  • 하드웨어 인터페이스 : USB , HDML
  • 소프트웨어 인터페이스 : API , GDI
  • Human computer 인터페이스 : UI , 키보드, 마우스, 모니터, 프린터 ( 사람 - 컴퓨터를 연결해줌)

 

 

API  (Application Programming Interface)

 

  • 응용프로그램에서 소통하기 위한 접점
  • 애플리케이션에서 데이터를 읽거나 쓰기위해 사용하는 인터페이스
  • 예) 날씨 애플리케이션을 만든다면 기상청에 날씨 정보를 요청해서 응답을 받은 후 화면에 날씨정보 보여줌              이때 날씨정보를 가져올수 있도록 기상청에서 제공하는 접점이 API

 

 

REST (Representational State Transfer) 

 

정의

  • 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것
  • 네트워크상에서 Client와 Server 사이의 통신 방식
  • HTTP URL를 통해 자원을 명시 / HTTP Method (CRUD)를 통해 자원에 대한 기능 적용
  • 자원 (Resource) : 다양한 애플리케이션이 클라이언트에게 제공하는 정보 / 이미지, 동영상, 텍스트 등 모든 유형의 데이터임
  • 클라이언트 : 웹에서 정보에 액세스하려는 사용자
  • 서버 : 클라이언트에 리소스를 제공하는 시스템

CRUD Operation

  • Create :  생성 (POST) / Read : 조회 (GET) / Update : 수정 (PUT) / Delete : 삭제 (DELETE) / HEAD : header 정보조회 (HEAD)

구성요소

  • 자원(Resource): URI -> 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재함
  • 행위(Verb): HTTP Method 
  • 표현(Representation of Resource) -> Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보냄 / Json, XML를 통해 데이터를 주고 받는 것이 일반적임

장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 별도의 인프라를 구축할 필요 없음
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능
  • 서버와 클라이언트의 역할을 명확하게 분리함

단점

  • 표준이 존재하지 않음
  • 사용할 수 있는 Method가 제한적임

 

 

REST API

정의

  • REST 기반으로 서비스 API를 구현하는 것
  • REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어(Java, C#..)로 클라이언트, 서버를 구현할 수 있음

설계규칙

  • URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
  • 슬래시 구분자(/ )는 계층 관계를 나타내는데 사용한다.
  • 마지막에 슬래시 (/)를 포함하지 않는다.
  • 언더바 대신 하이폰을 사용한다.
  • 행위를 포함하지 않는다.
  • 자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현한다.
  • 경로 부분 중 변하는 부분은 유일한 값으로 대체한다. (id=12인 student를 삭제하는 route: DELETE /students/12)

작동과정

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

인증방법

  • HTTP 인증 : REST API를 구현할 때 직접 사용할 수 있는 인증 체계를 정의함                                                                  기본인증 - 클라이언트는 요청 헤더에 사용자 이름, 암호를 넣어 전송함, 안전한 전송 위해 이 페어를 base64로 인코딩 전달자 인증 - 토큰 전달자에 대한 액세스 제어를 제공함, 클라이언트는 리소스에 액세스하기 위해 요청 헤더에 토큰을 넣어 전송
  • API 키 : 서버는 고유하게 생성된 값을 최초 클라이언트에 할당, 클라이언트는 리소스에 액세스 하려고 할 때마다 고유한 API 키를 사용하여 본인을 검증함
  • OAuth : 모든 시스템에 대해 매우 안전한 로그인 액세스를 보장하기 위해 암호와 토큰을 결합함, 서버는 먼저 암호를 요청한 다음 권한 부여 프로세스를 완료하기 위해 추가 토큰을 요청함

 

 

RESTFul 

 

  • REST API’를 제공하는 웹 서비스를 ‘RESTful’하다고 할 수 있다.
  • 목적 : 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
  • Restful 하지 못한 경우 : CRUD 기능을 모두 POST로만 처리하는 API, route에 resource, id 외의 정보가 들어가는 경우(/students/updateName)

 

 

AWS에서 RESTFul API 관리 

 

API Gateway를 사용하면 실시간 양방향 통신 애플리케이션을 위한 RESTful API를 생성할 수 있음

 

API 게이트웨이를 사용하여 다음을 수행함

  • API 요청 및 응답 모두에 대해 사용자에게 고속 성능을 제공합니다.
  • AWS Identity and Access Management(IAM)와 Amazon Cognito를 사용하여 API에 대한 액세스 권한을 부여합니다(기본적으로 OAuth를 지원).
  • API Gateway를 사용해 동일한 API의 여러 버전을 동시에 실행하여 새로운 버전을 빠르게 반복, 테스트 및 출시합니다.
  • API Gateway에서 API 호출, 데이터 대기 시간 및 오류율에 대한 성능 지표 및 정보를 모니터링합니다. 

 

 

참고자료 

 

http://www.incodom.kr/REST

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

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

'클라우드 > 클라우드 프로젝트' 카테고리의 다른 글

[프로젝트] npm start 에러  (0) 2022.08.20
[프로젝트] vscode - ubuntu 연결  (0) 2022.08.20