오픈API 란?

OpenAPI는 RESTful API의 명세(specification)를 정의하는 표준입니다. 이를 통해 API의 구조, 요청 및 응답 형식, 인증 방식 등을 일관되게 문서화하고, 개발자들이 쉽게 API를 이해하고 사용할 수 있도록 돕습니다. (일반적으로 회원가입과 사용승인을 거쳐 사용)

1. OpenAPI의 개요

  • 표준화된 문서 형식
    OpenAPI는 API의 엔드포인트, 요청 및 응답 데이터 형식, 인증 방식 등을 YAML 또는 JSON 형식으로 문서화할 수 있도록 제공합니다.
  • 자동 문서 생성 지원
    OpenAPI 문서를 기반으로 Swagger UI 같은 도구를 사용하면, 자동으로 API 문서를 생성하고 테스트할 수 있습니다.
  • 코드 자동 생성
    OpenAPI 명세를 기반으로 클라이언트 및 서버 코드를 자동으로 생성할 수 있어, API 개발 속도를 높이고 오류를 줄일 수 있습니다.

오픈API 용어 정리

  • API: 응용 프로그램 작성을 위한 인터페이스
    • 대표적 방법 2가지: SOAP, REST
    • 공개 여부에 따라: Open, Close (proprietary)
  • 오픈API: 원하는 사람들이 사용할 수 있도록 규격을 공개 한 API
  • API키 또는 인증키: 인증된 사용자임을 입증하는 고유한 문자열
  • JSON: (JavaScript Object Notation, 가볍고 사용이 편리해서 많이 사용)JavaScript 객체 문법으로 구조화된 데이터를 표현하기위한 표준 포맷
  • XML: (eXtensible Markup Language) 구조화된 데이터를 표현하기위한 확장 가능한 다목적 마크업 언어

2. OpenAPI의 주요 특징

  1. 명확한 API 문서화
    • API의 동작 방식, 요청 및 응답 형식을 명확하게 정의함.
    • Swagger UI와 같은 도구를 활용하여 시각적으로 확인 가능.
  2. API 테스트 및 실행
    • OpenAPI 문서를 통해 API 요청을 테스트하고 응답을 확인할 수 있음.
  3. 다양한 언어 지원
    • Java, Python, Node.js, Go 등 다양한 언어에서 OpenAPI 기반으로 API 개발 가능.
  4. 자동화된 코드 생성
    • OpenAPI 명세를 기반으로 API 클라이언트 및 서버 코드 자동 생성.
    • 예: openapi-generator를 활용하여 Java Spring, Python Flask 등의 API 코드 생성 가능.
  5. 버전 관리와 협업 용이
    • API 변경 사항을 체계적으로 관리하고, 협업 시 혼선을 방지할 수 있음.

3. OpenAPI와 Swagger의 차이

구분OpenAPISwagger
정의API 명세를 위한 표준OpenAPI를 구현한 도구
사용 목적REST API 정의 및 문서화API 문서화, UI 제공, 테스트 가능
파일 형식YAML, JSONYAML, JSON (Swagger UI 사용)

Swagger는 OpenAPI를 기반으로 동작하는 도구이며, OpenAPI는 표준 자체를 의미합니다.

결론

OpenAPI는 REST API의 명세를 정의하는 표준으로, 문서화, 테스트, 코드 자동 생성 등의 기능을 제공하여 API 개발 및 협업을 용이하게 합니다. Swagger 같은 도구를 활용하면 OpenAPI 문서를 시각적으로 확인하고, API 요청을 테스트할 수도 있습니다.


추가 정보

공공데이터 포털과 오픈API

공공데이터 포털(data.go.kr): 매우 다양한 데이터와 오픈 API 와 제공

https://www.data.go.kr

https://www.data.go.kr

https://www.data.go.kr/tcs/dss/selectDataSetList.do?keyword=도로명+주소

SOAP vs REST

  • SOAP (Simple Object Access Protocol)
  • REST(Representational State Transfer)

SOAP (Simple Object Access Protocol)과 REST (Representational State Transfer) API는 웹 서비스를 구현하는 두 가지 주요 방식입니다. 주요 차이점을 아래 표로 정리하겠습니다.

비교 항목SOAPREST
프로토콜독자적인 프로토콜 (XML 기반)HTTP 프로토콜을 활용
데이터 형식XML만 지원JSON, XML, YAML 등 다양한 형식 지원
전송 방식HTTP, SMTP, TCP 등 다양한 프로토콜 지원HTTP 기반 (GET, POST, PUT, DELETE 활용)
보안WS-Security, SSL/TLS, 인증 및 권한 부여를 명확하게 지원주로 SSL/TLS, OAuth 2.0 등을 사용 (보안 구현이 상대적으로 단순)
성능 및 속도XML 기반의 무거운 메시지 구조로 인해 상대적으로 느림JSON을 주로 사용하여 가볍고 빠름
트랜잭션 지원ACID(원자성, 일관성, 격리성, 지속성) 지원 가능기본적으로 지원하지 않음 (애플리케이션에서 처리 필요)
서비스 계약WSDL(Web Services Description Language)을 사용하여 서비스 계약 정의일반적으로 OpenAPI (Swagger) 또는 기타 문서화 도구 활용
유연성엄격한 표준을 따르며 구조화됨설계가 유연하고 확장성이 높음
사용 사례금융, 엔터프라이즈 시스템, 보안이 중요한 환경웹 서비스, 모바일 애플리케이션, 클라우드 API

어떤 것을 선택해야 할까?

  • SOAP: 보안이 중요한 금융 시스템, 엔터프라이즈급 애플리케이션, 강력한 트랜잭션 관리가 필요한 경우 적합.
  • REST: 빠른 응답 속도와 확장성이 필요한 모바일 및 웹 애플리케이션, 클라우드 서비스 등에 적합.

즉, SOAP은 보안과 신뢰성이 중요한 경우, REST는 경량화된 서비스와 확장성이 중요한 경우 사용하면 좋습니다.

SOAP (Simple Object Access Protocol)

다른 언어, 다른 플랫폼의 애플리케이션이 통신할 수 있도록 설계된 최초의 표준 프로토콜. 높은 복잡성과 오버헤드가 있지만 보안과 트랜잭션(ACID)을 포함

  1. 웹 서비스 보안(WS-security)
  2. WS-ReliableMessaging
  3. 웹 서비스 주소지정(WS-addressing)
  4. 웹 서비스 기술 언어(WSDL)

REST(RESTful) 조건 6

  1. 클라이언트-서버 아키텍처
  2. 스테이트리스(stateless) 커뮤니케이션 (세션 정보는 클라이언트 저장)
  3. 일부 데이터는 캐시 가능
  4. 표준화된 형식의 인터페이스
  5. 계층화된 시스템 제약 (계층적 조정 가능한)
  6. 코드 온디맨드 (코드를 전송해 클라이언트 기능확장, 선택적)

REST(RESTful) 이란 – 쉬운 설명

  1. REST(Representational State Transfer)
    • 넓은 의미: 자원을 식별하고 자원의 상태를 주고 받는 모든 것
    • 좁은의미: HTTP로 CRUD를 실행하는 API
  2. 가벼운 요청-응답 구조, 이해와 사용이 쉬운 API
    • 자원에 대한 상태를 요청하고,
    • 다양한 표현(JSON, XML, HTML, XLT, TXT)로 응답
  3. REST 아키텍처 원칙 세트
    • 프로토콜이나 표준이 아님
    • API 개발자는 REST를 다양한 방식으로 구현

HTTP 명령어

HTTP 명령어와 CRUD

  • POST: 등록(Create)
  • GET: 조회(Read)
  • PUT: 수정(Update)
  • DELETE: 삭제(Delete)

zerg96

Share
Published by
zerg96

Recent Posts

MCP(Model Context Protocol)

오늘은 AI 생태계에 혁신적인 변화를 가져올 것으로 예상되는 MCP(Model Context Protocol)에 대해 상세히 알아보겠습니다. 2024년…

1주 ago

TPM(Trusted Platform Module)

1. TPM이란? TPM(Trusted Platform Module)은 국제 표준 기반의 보안 하드웨어 칩으로, 컴퓨터나 디지털 장비 내에서…

1주 ago

BitLocker

BitLocker는 Microsoft Windows 운영 체제에 내장된 디스크 전체 암호화(Full Disk Encryption) 기능입니다. 기업 환경뿐만 아니라…

1주 ago

《데블스 플랜 시즌2》: 게임인가, 연애인가? 소희 이렇게까지..?

시즌2, 기대했는데... 실망도 두 배!두뇌싸움을 기대했는데, 전략도 없는 자기들만의 감정에 따른 편가르기, 정치싸움이 되어 버린…

2주 ago

BPF도어(BPFdoor)

BPF(Berkeley Packet Filter) 도어는 해커가 관리자 몰래 뒷문을 새로 만든 것입니다.해커가 명령을 내려 특정 데이터들을 뒷문을…

2주 ago

IPC (Inter-Process Communication)

1. IPC의 개념과 목적 1.1 IPC란 무엇인가? IPC (Inter-Process Communication)는 운영체제 내의 서로 독립적인 프로세스…

2주 ago