주 콘텐츠로 건너뛰기
Basic Knowledge of MIDAS API 생성 편집

MIDAS GEN/CIVIL NX Open API는 어떤 방식으로 작동하나요?

shutterstock_2340262111-20231113-072646.jpg

MIDAS Open API

웹 환경은 이미 우리의 일상 전반에 깊숙이 자리 잡고 있습니다. MIDAS는 미래에 대한 더 나은 비전과 대비를 위해, 기존의 전통적인 API 방식이 아닌 웹 기반 API를 채택하였습니다.

 

API vs. Web API

기존 API와 Web API는 다음과 같은 서로 다른 특성을 가지고 있습니다.

구분 API Web API
접근 방식 주로 프로그래밍 언어 내부에서 호출 HTTP 프로토콜을 통한 웹 요청
통신 프로토콜 다양한 프로토콜 사용 가능 주로 HTTP / HTTPS 사용
요청/응답 데이터 형식 다양한 데이터 형식 사용 가능 주로 JSON 또는 XML 사용
사용 목적 프로그램 간 연동 또는 라이브러리 활용 웹 애플리케이션 간 데이터 공유 또는 외부 개발자 대상 서비스 제공
보안 인증 및 권한 방식의 사용자 정의 가능 OAuth 2.0, API Key 기반 인증 및 권한 관리
접근 제어 로컬 네트워크 또는 단일 PC 환경 중심 인터넷을 통한 원격 접근 가능
플랫폼 종속성 언어 또는 플랫폼에 따라 종속성 발생 가능 웹 브라우저 또는 HTTP 클라이언트를 통해 플랫폼 독립적 사용 가능

 

위 항목들은 각 방식의 특성을 나타내며, 상황에 따라 장점이 될 수도, 단점이 될 수도 있습니다.

 

구조

MIDAS GEN/CIVIL NX Open API는 웹 API와 네트워크 API 기술을 결합한 구조로, 보다 효율적이고 안정적인 서비스를 제공합니다.

 

MIDAS GEN/CIVIL NX는 애플리케이션과 직접 통신하지 않습니다.

사용자(클라이언트)를 포함한 외부 애플리케이션은 REST API를 통해 웹 상에서 서버와 통신하며, 이후 WebSocket 기술을 통해 연결된 MIDAS GEN/CIVIL NX와 상호작용합니다. 즉, 서버(AWS)는 MIDAS 제품과 애플리케이션 사이에서 중개자 역할을 수행합니다.

 

사용자는 일반적으로 다음과 같은 방식으로 시스템과 상호작용하게 됩니다.

서버는 다수의 WebSocket 클라이언트(MIDAS 제품)를 동시에 처리할 수 있습니다. 각 제품은 “MAPI-Key”를 통해 식별되며, 따라서 클라이언트(애플리케이션)는 REST API 요청 시 어떤 제품을 대상으로 하는지 명시하기 위해 헤더에 “MAPI-Key”를 포함해야 합니다.

이 운영 구조에 따라, 하나의 클라이언트가 여러 개의 MAPI-Key 정보를 보유하고 있다면 하나의 환경에서 여러 MIDAS 제품을 동시에 관리할 수 있습니다.

단, “MAPI-Key” 보안에 유의해야 합니다. MAPI-Key는 임시 키로 동작하며, 필요 시 언제든 변경할 수 있습니다. 또한 문자와 숫자가 혼합된 긴 문자열로 구성되어 있어 무작위 추측에 의한 접근은 사실상 불가능합니다.

Base URL과 API-KEY

 

동작 방식

MIDAS Open API의 기본적인 동작 과정을 개념적인 예시로 설명하면 다음과 같습니다.
 

  1. 클라이언트는 다음과 같은 정보로 서버에 REST API 요청을 보냅니다.
    1. HTTP Method: “GET”
    2. URL: “/db/node”
    3. Header: “MAPI-Key”: “######”
  2. 요청을 받은 서버는 해당 제품을 식별하고, 노드 정보를 요청합니다.
  3. 제품은 서버로 노드 정보를 전달합니다.
  4. 서버는 전달받은 노드 정보를 다시 클라이언트로 전달합니다.

     

이러한 구조적 특성으로 인해, 모든 동작이 로컬 PC에서 직접 이루어진다고 오해할 수 있습니다. 그러나 앞서 설명한 것처럼, MIDAS GEN/CIVIL NX는 애플리케이션과 직접 통신하지 않으며, 모든 API 동작은 서버를 통해 이루어집니다.

 

특징

웹 API 형태의 MIDAS GEN/CIVIL NX Open API는 다음과 같은 특징을 가집니다.

주요 특성은 다음과 같습니다.
 

  • 플랫폼 / 언어 독립성
     
    1. HTTP 요청을 사용할 수 있는 모든 언어 및 환경에서 사용 가능합니다 (C, C++, C#, VB, VBA, Java, JavaScript, TypeScript, Python 등).
    2. 다양한 특성을 가진 애플리케이션 구현이 가능합니다.
       
  • 제한된 데이터 포맷
     
    1. 모든 데이터는 JSON 포맷으로만 제공되며, 각 애플리케이션은 JSON을 파싱(parsing)하여 활용합니다.
    2. 대부분의 개발 환경에서는 JSON 처리를 위한 기본 또는 사용자 라이브러리를 제공합니다.
       
  • 확장성
     
    1. 원격 접근, 다중 클라이언트 연결, 웹 기반 제어에 대한 확장성을 제공합니다.
    2. 이를 통해 서버와 다수의 클라이언트 간 효율적인 통신 및 협업이 가능합니다.

 

0
컨텐츠가 도움이 되셨나요?