카테고리 없음

[CS/기술면접] RESTful API

보리시스템 2023. 4. 17.
RESTful API에 대해 설명해보세요.

 

1. 한마디 정리

RESTful API는 웹 어플리케이션과 서버 간의 통신을 위한 인터페이스로, HTTP 요청과 응답을 통해 데이터를 주고 받습니다.

*Representational State Transfer(표현 상태 전이)를 따르는 API

 

2. 내가 생각한 꼬리질문

1) RESTful API는 어떻게 작동하나요?

클라이언트가 서버에 요청을 전송하면

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

 

2) REST API와 RESTful API의 차이는 무엇인가요?

REST API와 RESTful API는 비슷한 개념이지만 약간의 차이가 있습니다.
REST API는 Representational State Transfer의 약자로, RESTful 원칙을 따르는 API를 의미합니다. RESTful API는 REST API의 하위 집합으로, REST API의 원칙을 완벽하게 따르는 API를 의미합니다.

즉, RESTful API는 REST API보다 엄격한 제약을 따르며, URI 구성과 HTTP 메서드 사용에 있어 더 많은 규칙을 가지고 있습니다. RESTful API는 자원을 URI로 표현하고, 자원에 대한 행위는 HTTP 동사(GET, POST, PUT, DELETE 등)를 이용하여 표현하며, 무상태성(statelessness)을 강조합니다.

따라서, RESTful API는 REST API보다 더 일관성 있고 간결한 인터페이스를 제공하며, 클라이언트와 서버 간의 통신을 보다 효율적으로 처리할 수 있습니다. 하지만, RESTful API는 REST API보다 더 엄격한 제약을 가지고 있기 때문에, 모든 API가 RESTful한 것은 아닙니다.

 

3) RESTful API의 장점과 단점은 무엇인가요?

장점 단점
확장성 복잡성
유연성 보안
가독성 서버 부하
캐싱 테스트 어려움
RESTful API는 확장성이 높아서 서버와 클라이언트가 독립적으로 확장될 수 있습니다. 또한, 다양한 클라이언트와 플랫폼에서 호환성이 높아서 유연성이 좋습니다. URI와 HTTP 메서드를 사용하여 자원과 자원에 대한 행위를 명확하게 표현할 수 있어 가독성이 좋으며, HTTP 캐시 메커니즘을 사용할 수 있어 성능 향상에 유리합니다.

하지만, URI와 HTTP 메서드를 사용하여 자원과 자원에 대한 행위를 표현하기 때문에 복잡하고 혼란스러울 수 있습니다. 또한, RESTful API는 HTTP를 기반으로 하기 때문에 HTTPS를 사용하지 않으면 보안에 취약할 수 있으며, 무상태성을 강조하기 때문에 클라이언트와 서버 간의 상태 정보를 유지할 수 없어 서버 부하가 증가할 수 있습니다. 또한, 다양한 URI와 HTTP 메서드를 사용하기 때문에 테스트하기 어려울 수 있습니다.

장점

1. 확장성
RESTful API는 각 자원에 대한 URI를 사용하므로, 서버와 클라이언트가 독립적으로 확장될 수 있습니다. 즉, 새로운 자원을 추가하거나 기존 자원을 변경하더라도 다른 자원에 영향을 주지 않습니다.

2. 유연성
RESTful API는 HTTP 메서드를 사용하므로, 다양한 클라이언트와 플랫폼에서 호환성이 높습니다.

3. 가독성
RESTful API는 URI와 HTTP 메서드를 사용하여 자원과 자원에 대한 행위를 명확하게 표현할 수 있으므로, 가독성이 좋습니다.

4. 캐싱
RESTful API는 HTTP 캐시 메커니즘을 사용할 수 있으므로, 성능 향상에 유리합니다.

단점

1. 복잡성
RESTful API는 URI와 HTTP 메서드를 사용하여 자원과 자원에 대한 행위를 표현하기 때문에, 복잡하고 혼란스러울 수 있습니다.

2. 보안
RESTful API는 HTTP를 기반으로 하기 때문에, HTTPS를 사용하지 않으면 보안에 취약할 수 있습니다.

3. 서버 부하
RESTful API는 무상태성을 강조하기 때문에, 클라이언트와 서버 간의 상태 정보를 유지할 수 없습니다. 이로 인해 서버 부하가 증가할 수 있습니다.

4. 테스트
RESTful API는 다양한 URI와 HTTP 메서드를 사용하기 때문에, 테스트하기 어려울 수 있습니다.

 

4) REST는 무엇인가요?

REST는 웹 아키텍처의 원리를 따르는 아키텍처 스타일로, 분산 시스템에서 자원을 정의하고, 자원에 대한 상태를 주고 받는 방식을 제공

 

5) 왜 REST API가 등장한 걸까요?

1. 분산 시스템의 등장
분산 시스템이 등장하면서 클라이언트와 서버의 개념이 분리되었습니다. 이에 따라, 서버와 클라이언트 간의 통신이 필요해졌고, 이를 위한 표준 방식이 필요했습니다.

2. 웹의 발전
HTTP 프로토콜은 웹에서 가장 널리 사용되는 프로토콜 중 하나입니다. REST API는 HTTP 프로토콜을 기반으로 하므로, 웹의 발전에 따라 REST API가 더욱 중요해졌습니다.

3. 애플리케이션 개발의 복잡성 증가
과거에는 애플리케이션 개발이 단순했지만, 현재는 다양한 기술과 플랫폼이 등장하면서 애플리케이션 개발이 복잡해졌습니다. REST API는 다양한 클라이언트와 플랫폼에서 호환성이 높아서, 애플리케이션 개발의 복잡성을 줄일 수 있습니다.

4. REST의 등장
REST는 Roy Fielding이 2000년에 발표한 논문에서 처음 소개되었습니다. REST는 웹 아키텍처의 원리를 따르는 아키텍처 스타일로, 분산 시스템에서 자원을 정의하고, 자원에 대한 상태를 주고 받는 방식을 제공합니다. 이에 따라 REST API가 등장하게 되었습니다.
따라서, REST API는 분산 시스템에서 자원을 정의하고, 자원에 대한 상태를 주고 받는 방식을 제공하는 REST 아키텍처의 일부입니다. REST API는 HTTP 프로토콜을 기반으로 하므로, 웹의 발전과 함께 중요성이 높아졌습니다.

 

REST API를 보호하려면 어떻게 해야 하나요?
모든 API는 적절한 인증 및 모니터링을 통해 보호되어야 합니다. 다음은 REST API를 보호하는 두 가지 주요 방법입니다.

1. 인증 토큰 
인증 토큰은 사용자에게 API 호출을 수행할 수 있는 권한을 부여하는 데 사용됩니다. 인증 토큰은 사용자가 자신이 누구인지 확인하고 해당 특정 API 호출에 대한 액세스 권한이 있는지 확인합니다. 예를 들어, 이메일 서버에 로그인하면 이메일 클라이언트는 보안 액세스를 위해 인증 토큰을 사용합니다.

2. API 키 
API 키는 API를 호출하는 프로그램 또는 애플리케이션을 확인합니다. 즉, 애플리케이션을 식별하고 애플리케이션에 특정 API 호출을 수행하는 데 필요한 액세스 권한이 있는지 확인합니다. API 키는 토큰만큼 안전하지 않지만 사용량에 대한 데이터를 수집하기 위해 API 모니터링을 허용합니다. 다른 웹 사이트를 방문할 때 브라우저 URL에서 긴 문자열과 숫자를 본 적이 있을 것입니다. 이 문자열은 웹 사이트가 내부 API 호출을 수행하는 데 사용하는 API 키입니다.

 

3. 스터디원 꼬리질문

 

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