본문 바로가기
QA

API

by 오탄 2025. 10. 15.

1. API (Application Programming Interface) 란?

    - 서로 다른 소프트웨어 프로그램이 데이터를 주고받고 기능을 공유할 수 있도록 하는 규칙과 약속의 집합

       * Interface : 서로 다른 두 시스템, 장치, 또는 프로그램 사이에서 정보나 신호를 주고받을 수 있도록 하는 접점이나 경계면

     - REST, SOAP, GraphQL 등 여러 방식 존재

 

1.1. REST API

        - Representional State Transfer(표현 상태 전이)

          •Representional : 자원(resource) 을 특정 형식(Json, XML) 등으로 표현한 것 

          •State : 시스템 또는 자원의 현재 상태(데이터나 정보)

          •Transfer : 이 표현된 상태를 클라이언트와 서버 간에 주고 받는 행위

        - 여러 개의 자원을 각각 다른 URL(엔드포인트로 요청)

            * 오버헤드(overhead) : 작업을 처리함에 있어 본래 목적 외에 추가적으로 소요되는 간접적인 시간, 메모리, 자원 등을 의미

1.1.1. CRUD 와 연계

           - HTTP 메소드 GET, POST, PUT, DELETE 와 연계

             •Create ↔ POST : 새로운 리소스를 생성할 때 사용

             •Read GET : 리소스 데이터를 조회할 때 사용

             •Update PUT(+PATCH) : 전체 리소스를 수정하거나 새로 생성할 때 사용

                   * POST 와 혼동 금지(클라이언트가 리소스 ID 를 알고서 요청을 보내는 것이 기본)

                   * 리소스가 새로 생성(201 Created), 리소스가 수정(200 Ok, 204 No Content)

             •Delete ↔ Delete : 리소스를 삭제할 때 사용

1.1.2. REST 규칙 (6가지)

           - Client-Server 구조
              : 클라이언트와 서버는 역할 분리되어 독립적으로 개발되고 운영 가능해야 함.

           -  Stateless (무상태성)

              : 서버는 각 요청을 독립적으로 처리하며, 이전 요청의 상태를 저장하지 않음. 요청에 필요한 모든 정보를 포함해야 함.

           -  Cacheable (캐시 가능성)

              : 서버 응답은 명확하게 캐시 가능 여부가 표시되어, 클라이언트가 응답을 캐싱할 수 있어야 함.

           -  Uniform Interface (일관된 인터페이스)

              : 자원은 고유한 URI로 식별되고, HTTP 메서드 활용하며, 메시지 형식은 표준화 함.

           -  Layered System (계층화 시스템)

              : 서버 구성은 여러 계층으로 구성 가능하며, 클라이언트는 중간 계층을 알 필요 없이 통신 가능함.

                  * 중간 계층 : 프록시, 로드밸런서 등

           -  Code on Demand (선택적)
               : 서버가 클라이언트에 실행할 코드를 보내 기능을 임시로 확장(거의 사용되지 않는 옵션)

                    * Restful URI 설계 규칙

                       •리소스는 명사로 표현
                    
  
  URI는 소문자와 슬래시(/)로 계층 구조 표기

                    
  
  HTTP 메서드로 행위 표현 (GET, POST, PUT, DELETE)
   
                    
  
 
URI에 동사 사용 금지 (잘못된 예: /getUser)
     
                    
  
 
고유 아이디를 URI에 포함해 특정 리소스 식별 (/users/123)

 

1.2. SOAP (Simple Object Access Protocol)

        - 프로토콜 기반의 API 통신 방식, XML 형식의 메시지를 사용하는 표준화된 웹 서비스 규격

        - 엄격한 메시지 구조와 보안, 트랜잭션 관리 등 금융, 통신 분야에서 많이 사용

        - SMTP 등 다양한 프로토콜 위에서 동작, WSDL 을 통해 서비스와 메시지 형식을 명확히 정의

        - HTTP 의 바디에 SOAP 메시지 담김, 헤더에는 Content-Type: tex/xml 로 타입을 명시

          •Envelope(봉투) : SOAP 메시지의 루트, 최상위 컨테이너임.

          •Header(헤더) : 선택적 요소, 메시지 경로나 인증, 추가 메타데이터 등을 포함.

          •Body(본문) : 필수 요소, 실제 요청이나 응답에 사용되는 데이터를 포함.

          •Fault(결함) : 오류 정보를 담는 Body 의 하위 요소로, 에러 발생 시 포함됨.

 

1.3. GraphQL

        - 페이스북이 만든 쿼리 언어이자 런타임

        - REST와 달리 여러 자원에 대한 요청을 하나의 엔드포인트로 처리

          과도하거나 부족한 데이터 전송 문제를 해결합니다.

            * 단일 엔드포인트에 한 번의 요청으로 여러 자원에 대한 데이터를 쿼리 형태로 동시에 요청

 

2. Batch App 과 API Service 의 차이

     - 역할과 동작 방식이 다르기 때문에 App, Service 라고 부름.

 

2.1. Batch App

        - 일괄 처리 작업을 수행하는 프로그램

        - 주로 대량의 데이터를 한꺼번에 처리하는 작업이 정해진 주기나 조건에 따라서 실행됨.

        - 사용자 요청에 실시간으로 반응하지 않고 예약된 시간에 자동으로 수행됨.

        - 독립 실행형 프로그램이나 서버 내에서 실행되며, 긴 시간 동안 무거운 작업을 수행함.

        - 사용자가 직접 호출하지 않고, 백엔드에서 작업됨.(UI 없음)

          •테스트 하기 위해서 로그나 DB 에 저장되는 값을 확인

 

2.2. API Service

        - HTTP나 다른 프로토콜을 이용해 클라이언트 요청에 실시간으로 응답함.

        - 네트워크 요청에 실시간으로 응답, 여러 클라이언트 요청을 동시에 처리함.

        - 외부 애플리케이션이나 시스템에 기능을 노출함.

        - 클라이언트가 직접 호출하여 결과를 전달받음.

'QA' 카테고리의 다른 글

Appium  (0) 2025.10.21
Charles Proxy  (0) 2025.10.19
성능 테스트  (0) 2025.10.15
로컬 환경 만들기  (0) 2025.10.14
키바나  (0) 2025.10.13