• Interface : 상호작용
• API ( Aplication Programming Interface): SW가 다른 SW로부터 지정된 형식으로 요청, 명령받을 수 있는 수단
• REST API : 웹>서버, 앱>서버 에 주로 사용되는 서비스 형식(REST)의 API
기존에 복잡했던 SOAP 방식 대체
각 요청이 어떤 동작, 정보를 위한 것인지 그 요청의 모습 자체로 추론가능함
ex) URI : 자원을 구조와 함께 나타냄
https://(도메인)/classes/2/students/15
: 2반의 15번 학생
https://(도메인)/classes/2/students?sex=male
: 남학생 조건
https://(도메인)/classes/2/students?page=2&count=10
: 한페이지에 10명 지정, 즉 11~20번 학생 (2page)
서버에 REST API로 요청 보낼때=HTTP 규약에 따라 신호 전송
- GET/ DELETE/ (BODY) POST/ PUT/ PATCH
body=get, delete 보다 정보를 많이, 비교적 안전하게 보낼 수 있음
• REST API의 보안
1) 인증
- API key : 특정 사용자만 아는 문자열. 클라이언트가 같은 키 공유 > 보안 취약
- API token : id/pw로 사용자 인증 후에 API호출 기한이 있는 토큰 발급 > 토큰으로 사용자 인증
= pw 유출의 연쇄적인 보안 문제 방지
token 방식 :
HTTP Basic Auth : 헤더에 id/pw 인코딩형태(Base64)로 인증
Digest Access Authentication : Base64 인증 단점 보강. 클라이언트가 인증 요청 시 서버로부터 nonce (난수) 발급 받음
id/pw를 nonce를 이용해 해시화, 서버에 전송
2) 인가 : 사용자 권한 체크 (해당 리소스에 대해 사용자가 리소스 사용 권한 있는지)
3) 네트워트 레벨 암호화 (https 보안 프로토콜)
• RESTful :
CRUD를 목적에 따라 구분해서 사용해야 함
URI 는 동사가 아닌 명사로 이뤄져야 함!
(restful api design guidelines 참고)
이어서...
GraphQL : 용도에 따라 REST API의 대안으로 사용됨
Reference
1)
2) 조대협의 서버사이드 : 대용량 아키텍처와 성능 튜닝
'CS Interview > etc' 카테고리의 다른 글
DevOps에 대한 칼럼 (조대협의 서버사이드) (2) | 2021.06.16 |
---|---|
마이크로 서비스란 (MSA) - 모놀리식 아키텍처, API Gateway vs ESB (0) | 2021.06.16 |
[IBM API connect] 특징 (2) | 2021.05.11 |
JavaScript (0) | 2021.05.06 |
React & Vue (0) | 2021.05.06 |