API(애플리케이션 프로그래밍 인터페이스)란?

Application Programming Interface의 약자. 소프트웨어의 기능을 다른 프로그램에서 호출해 쓰기 위한 약속(함수나 조작의 이름, 인수, 반환값, 데이터 형식 등). OS의 API, 라이브러리의 API, HTTP로 데이터를 주고받는 웹 API(REST API 등)가 있다. 내부 구현을 몰라도 쓸 수 있고, API가 같으면 구현을 바꿀 수 있다. 기계어 수준의 약속은 ABI라고 부른다.

일본어 명칭: API

API(애플리케이션 프로그래밍 인터페이스)은(는) 웹 기술 기초, 클라우드와 컨테이너의 기초, 사이버 공격과 방어의 실무 등 4개 분야의 연습 문제 8개에 나와요.

분야: 소프트웨어 개발과 프로젝트 관리

도전해 보기: API(애플리케이션 프로그래밍 인터페이스) 관련 문제

클라우드 스토리지를 ① 가상 머신에 디스크로 연결하여 파일 시스템을 만들고 데이터베이스의 데이터 파일을 둔다, ② 여러 서버에서 동시에 마운트하여 공유 디렉터리로 사용한다, ③ HTTP의 API로 키(이름)를 지정하여 대량의 이미지를 읽고 쓰며, 용량을 미리 정하지 않고 늘린다는 세 가지 용도로 사용한다. ①~③에 적합한 스토리지 종류의 조합으로 적절한 것은?

  1. A① 오브젝트 스토리지, ② 블록 스토리지, ③ 파일 스토리지
  2. B① 파일 스토리지, ② 오브젝트 스토리지, ③ 블록 스토리지
  3. C① 블록 스토리지, ② 파일 스토리지, ③ 오브젝트 스토리지
정답과 해설 보기

정답: C. ① 블록 스토리지, ② 파일 스토리지, ③ 오브젝트 스토리지

블록 스토리지는 정해진 크기의 영역을 가상 디스크로 가상 머신에 연결하는 것으로, 파일 시스템을 만들어 사용하며 데이터베이스처럼 세세한 읽기와 쓰기를 빠르게 수행하는 용도에 적합합니다. 파일 스토리지는 NFS나 SMB 등으로 여러 서버에서 동시에 마운트할 수 있는 공유 파일 시스템을 제공합니다. 오브젝트 스토리지는 데이터를 키로 식별하는 오브젝트로서 HTTP의 API로 통째로 읽고 쓰는 것으로, 용량을 거의 신경 쓰지 않고 늘릴 수 있어 이미지나 백업, 로그의 저장에 적합합니다. 오브젝트의 일부만 수정하는 사용 방식에는 적합하지 않으므로 데이터베이스의 데이터 파일은 두지 않습니다.

웹 API가 응답 본문으로 JSON 형식의 데이터를 돌려준다. 본문의 형식을 나타내기 위해 응답에 붙이는 헤더로 일반적으로 사용되는 것은?

  1. AAccept: application/json
  2. BContent-Type: text/html
  3. CContent-Type: application/json
정답과 해설 보기

정답: C. Content-Type: application/json

본문 데이터의 종류는 Content-Type 헤더로 나타내며, 값에는 text/html이나 image/png 같은 '타입/서브타입' 형태의 미디어 타입(MIME 타입)을 씁니다. JSON의 미디어 타입은 application/json입니다. JSON은 {"id": 42, "tags": ["a", "b"]}처럼 이름과 값의 쌍이나 배열로 데이터를 나타내는 텍스트 형식으로, XML보다 기술이 짧고 JavaScript에서도 다루기 쉬워 웹 API에서 널리 사용됩니다. Accept 헤더는 클라이언트가 받고 싶은 형식을 요청에서 전하는 것입니다.

해설 속 API(애플리케이션 프로그래밍 인터페이스)

API(애플리케이션 프로그래밍 인터페이스)이(가) 나오는 문제 (8)

  1. 클라우드 스토리지를 ① 가상 머신에 디스크로 연결하여 파일 시스템을 만들고 데이터베이스의 데이터 파일을 둔다, ② 여러 서버에서 동시에 마운트하여 공유 디렉터리로 사용한다, ③ HTTP의 API로 키(이름)를 지정하여 대량의 이미지를 읽고 쓰며, 용량을 미리 정하지 않고 늘린다는 세 가지 용도로 사용한다. ①~③에 적합한 스토리지 종류의 조합으로 적절한 것은?
  2. 웹 API가 응답 본문으로 JSON 형식의 데이터를 돌려준다. 본문의 형식을 나타내기 위해 응답에 붙이는 헤더로 일반적으로 사용되는 것은?
  3. REST의 사고방식에 따른 웹 API 설계로 적절한 것은?
  4. 개발자가 클라우드 서비스의 API 키를 포함한 설정 파일을 실수로 공개 Git 리포지토리에 커밋해 버렸다. 알아챈 즉시 그 파일을 삭제하는 변경을 커밋했다. 이후에 해야 할 대응으로 가장 적절한 것은?
  5. ABI(애플리케이션 바이너리 인터페이스)에 대한 설명으로 올바른 것은?
  6. Kubernetes의 Secret에 데이터베이스의 비밀번호를 저장한다. Secret의 설명으로 올바른 것은?
  7. 서명을 붙인 일반적인 JWT(JSON Web Token)에 대한 설명으로 올바른 것은?
  8. 사진 인화 서비스 앱이 이용자의 허락을 받아, 다른 회사의 사진 보관 서비스에 있는 이용자의 사진을 읽어 온다. OAuth 2.0에서 이용자에게 허락을 구하는 화면을 보여 주고, 이용자가 허락하면 앱에 액세스 토큰을 발급하는 역할은?

관련 용어

HTTP(하이퍼텍스트 전송 프로토콜) 오브젝트 스토리지(Object Storage) JSON(JavaScript Object Notation) REST API URL HTTP 메서드(HTTP Method) Git ABI(애플리케이션 바이너리 인터페이스) 호출 규약(Calling Convention) 포인터(Pointer)

용어집으로 돌아가기