코벤저스 스터디 9일차 - REST API
(제목에 쓰니 너무 복잡해서 앞으로는 본문에 쓸 예정이다.)
Representational State Transfer Application Programming Interface
네트워크 기반 소프트웨어 시스템 간에 통신할 수 있는 인터페이스
👉REST : 웹 서비스를 구현하는 데 사용되는 아키텍처 스타일 중 하나
👉클라이언트(Client): API를 호출하는 곳.
(웹 애플리케이션이나 모바일 앱 등..)
👉서버(Server): API를 제공하는 곳.
(클라이언트의 요청을 받아 처리하고 그에 따른 응답을 반환)
👉Request/Response: 클라이언트가 서버에 요청을 보내고, 서버가 해당 요청을 처리한 후 클라이언트에 응답을 보낸다.
👏0단계 : HTTP 사용
HTTP를 단순히 전송 수단으로 사용하며, 리소스 식별에는 단순한 URI를 사용한다.
모든 요청은 단일 엔드포인트로 전송되며, 별도의 리소스 식별이 이루어지지 않는다.
👏1단계 : 개별 리소스와의 통신 준수
리소스 식별을 위해 URI를 사용하고, 다양한 엔드포인트로 리소스에 접근할 수 있습니다.
여전히 단일 엔드포인트에 모든 요청이 전송되며, HTTP 메서드는 제한적으로 사용됩니다.
👏2단계 : HTTP 메서드 원칙 준수
다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스에 대한 작업을 수행할 수 있다.
리소스의 CRUD(Create, Read, Update, Delete) 기능을 지원한다.
엔드포인트와 메서드의 조합을 통해 명시적인 의미를 부여할 수 있다.
👏3단계 : HATEOAS 원칙 준수
리소스와 관련된 하이퍼미디어 링크를 통해 API의 동적인 탐색과 상호작용을 지원한다.
클라이언트는 리소스와 관련된 링크를 통해 추가적인 동작을 수행할 수 있으며, API에 대한 완전한 자기서술(Self-descriptive)을 제공한다.
👋REST API 성숙도 모델은 API의 발전 상태를 평가하고, RESTful한 설계 원칙을 준수하여 품질 향상과 확장성을 지원한다.
이를 통해 개발자와 사용자 모두에게 높은 수준의 효율성과 유연성을 제공할 수 있는 API를 구축할 수 있는것이 가장 큰 장점!
Open Application Programming Interface
개방형으로 공개된 API
👏개방성과 상호운용성: Open API를 제공함으로써 다른 개발자들이 기능을 사용하고 확장할 수 있으며, 서로 다른 시스템 간에 상호작용이 가능하다.
👏혁신과 생태계 확장: Open API를 통해 외부 개발자들이 새로운 아이디어와 창의적인 기능을 개발할 수 있으며, 기업이나 개발자 생태계를 확장할 수 있다.
👏파트너십 형성: Open API는 파트너사나 개발자들과의 협업을 촉진하고, 다양한 비즈니스 모델과 협업 방식을 구축할 수 있는 기회를 제공한다.
👏확장성과 유연성: Open API를 통해 기업은 새로운 시장이나 플랫폼으로의 진출을 촉진하고, 서비스를 확장하며 다양한 클라이언트 애플리케이션을 지원할 수 있다.
API를 사용하기 위해 클라이언트가 인증하는 데 사용되는 보안 인증 정보
🔑인증(Authentication) : 클라이언트의 신원을 인증하기 위해 사용된다. 서버는 제공된 키를 확인하여 요청을 유효한 사용자나 애플리케이션에서 온 것인지 확인한다.
🔑권한 부여(Authorization) : API Key는 클라이언트가 특정 작업이나 리소스에 대한 권한을 가지고 있는지 확인하는 데 사용된다. 서버는 제공된 키를 기반으로 클라이언트의 권한을 확인하고, 요청된 작업을 수행할 수 있는지 결정한다.
🔑요청 제한(Request Limiting) : API Key는 클라이언트가 서비스를 과도하게 사용하지 않도록 제한하는 데 사용될 수 있다. API 서버는 각 API Key별로 요청 제한을 설정하여 트래픽을 제어하거나 무료 및 유료 요금제를 사용하기도 한다.
✍이미지 출처