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)
작동과정
- 클라이언트가 서버에 요청을 전송합니다. 클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정합니다.
- 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인합니다.
- 서버가 요청을 수신하고 내부적으로 처리합니다.
- 서버가 클라이언트에 응답을 반환합니다. 응답에는 요청이 성공했는지 여부를 클라이언트에 알려주는 정보가 포함됩니다. 응답에는 클라이언트가 요청한 모든 정보도 포함됩니다.
인증방법
- 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 호출, 데이터 대기 시간 및 오류율에 대한 성능 지표 및 정보를 모니터링합니다.
참고자료
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
'클라우드 > 클라우드 프로젝트' 카테고리의 다른 글
[프로젝트] npm start 에러 (0) | 2022.08.20 |
---|---|
[프로젝트] vscode - ubuntu 연결 (0) | 2022.08.20 |