RESTful API
RESful API는 (Representational State Transfer API)
애플리케이션과 서비스 사이에서 데이터 통신을 하기 위한 효과적인 방법입니다.
RESTful API는 클라이언트(애플리케이션)하고 서버가 독립적으로 있는 구조에서 데이터 통신을 하는 방법입니다.
Restful API 스타일 원칙
RESTful API는 규칙에 따라 사용됩니다.
균일한 인터페이스
모든 리소스는 URI로 식별되어야 합니다.
Ex) /users는 사용자 목록, /users/123 사용자 목록 중 ID가 123
무상태 Stateless
서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법을 나타냅니다.
계층화 시스템
클라이언트는 클라이언트와 서버 사이 다른 중개자(로드밸런서, 게이트웨이...)에게 연결 가능합니다.
캐시 가능성
서버 응답시간 개선을 위해 클라이언트에게 캐시를 저장해 서버응답시간을 늘릴 수 있습니다.
Restful API 장점
RESTful API의 주요 장점은 확장성, 유연성, 독립성 그중에서도 독립성이 매우 종요합니다.
확장성
클라이언트와 서버 상호작용을 최적화 하기때문에 효욜적으로 크기를 조정합니다.
통신 병목 현상을 일으키지 않으면서 확장해나갈 수 있어 확장성입니다.
유연성
리소스 중심의 설계여서 새로운 리소스 추가나 기존 리소스 업데이트가 쉽습니다.
독립성
클라이언트와 서버가 독립되어 있어 양쪽에 영향을 주지 않고 각자 개발이 가능합니다.
RESTful API 클라이언트 요청
RESTful API에서는 클라이언트가 HTTP를 이용해 서버에 요청합니다.
GET
조회 할 때 사용하는 메서드 쿼리 스트링에 데이터를 포함시켜서 서버에 전달합니다.
POST
생성할 때 사용하는 메서드 생성을 의미하는 201 응답 코드를 사용합니다.
PUT
수정할 때 사용하는 메서드 바디를 통해 데이터 전달 여러번 보내도 결과는 동일합니다.
DELETE
삭제할 때 사용하는 메서드 바디를 통해 데이터를 전달, 적절한 인증이 없으면 요청 실패합니다.
Header
요청에 대한 설정이나 다양한 측면들을 설명하는 사용됩니다.
Ex) Authorization. Content-Type, Accept 등이 있습니다.
RESTful API는 어떻게 작동하는가?
클라이언트 -> 리소스와 Http 메서드로 요청 -> 서버 -> 클라이언트로 응답 반환으로 작동하게 됩니다.
Restful API 인증 방법
RESTful API는 요청을 받으면 인증 절차가 필요합니다.
Http 기본 인증
가장 간단한 형태
클라이언트 요청 헤더에 사용자 이름과 비밀번호를 Base64로 인코딩하여 전송합니다.
토큰 기반 인증
가장 많이 사용되는 방식
로그인 시 서버에서 발급받은 엑세스 토큰을 사용하여 API 요청에 같이 보냅니다.
서버에서 토큰을 검증 유효한 경우에만 요청을 받아들입니다.
OAuth 인증
클라이언트가 사용자의 데이터에 접근할 수 있도록 권한을 부여하는 인증 프레임워크
OAuth 토큰을 사용해서 API에 접근합니다
API 키
주로 공개 API와 특정 어플리케이션에 대한 접근 제어에 사용합니다.
최초에 고유하게 생성된 값을 클라이언트에게 보내 이 생성된 값으로 클라이언트를 식별하고 권한을 확인합니다.
JWT인증
클레임 정보를 JSON 형식으로 인코딩하여 토큰으로 만드는 인증 방법입니다.
RESTful API 응답
상태표시
요청 성공 실패에 따라 3자리 상태 코드로 요청의 상태를 응답에 표시합니다.
Ex) 200 : 일반 성공 응답, 201: POST 메서드 성공 응답, 400 : 서버 요청이 유효하지 않음, 404 : 요청한 리소스가 없음, 401 : 클라이언트가 인증되지 않음, 500 : 서버 에러
메시지 본문
요청 헤더에 내용을 기반으로 요청에 대한 응답 메시지를 JSON 또는 XML로 반환합니다.
헤더
응답에 대한 설정이나 다양한 측면들을 설명하는 사용됩니다.
RESTful API 단점
세밀한 조작이 어려움
직관적이지만 CRUD밖에 하지 못해 제한적이다.
서버 푸시의 한계
클라이언트에서 서버로 요청하는 것이기 때문에 웹소켓을 하지 않는 이상 실시간 애플리케이션은 웹소켓과 같은 다른 기술을 사용해야 할 수 있습니다.
마무리
RESTful API에 대해서 많이 사용해 왔지만 잘 모르고 사용해 와서 RESTful API를 알아보았습니다.
RESTful API가 있어 계층의 구조화나 인증하는 방법에 대해서 모호하게 알고 있었던 점을 조금 더 자세하게 알 수 있어 도움이 많이 되었고
이번 기회에 POST 요청이 201이라는 점도 알게 되어 재미있는 스터디가 되었습니다.
감사합니다.
출처 : https://aws.amazon.com/ko/what-is/restful-api/
RESTful API란 무엇인가요? - RESTful API 설명 - AWS
Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애
aws.amazon.com