OpenAI API 활용

API

최 수빈 2024. 12. 10. 08:03

 

API(응용 프로그램 인터페이스, Application Programming Interface) 

소프트웨어 간의 상호 작용을 가능하게 하는 도구, 정의 및 프로토콜의 집합

 

 

API는 서로 다른 소프트웨어 시스템이나 애플리케이션이 데이터를 교환하거나 기능을 사용할 수 있도록 하는 인터페이스 역할을 한다.

 

API의 주요 개념

  1. 인터페이스: API는 두 애플리케이션 간의 상호작용 방식을 정의함
    예) 클라이언트 애플리케이션이 서버의 데이터를 가져오는 방법을 명확히 규정
  2. 명세 (Specification)
    • 요청(Request): 데이터를 요청할 때 필요한 메서드, 경로, 파라미터 등을 명시
    • 응답(Response): 요청에 대한 결과로 반환되는 데이터의 구조 정의
  3. 엔드포인트(Endpoint)
    • API가 제공하는 기능이나 데이터의 접근 지점을 말함(보통 URL로 표현)
    • <프로토콜>://<호스트>/<경로>?<쿼리파라미터>

      프로토콜(Protocol) HTTP 또는 HTTPS 사용
      호스트(Host) 서버 주소
      경로(Path) API가 제공하는 리소스를 식별하는 데 사용되는 경로
      쿼리 파라미터(Query Parameters)
       요청에 추가 정보 제공
       ?로 시작, &로 구분
       예) ?page=1&size=10

  4. 프로토콜:
    • API는 특정 프로토콜을 통해 작동
      • HTTP/HTTPS: 웹 기반 API에 주로 사용
      • SOAP: XML 기반의 프로토콜
      • GraphQL: 요청 시 필요한 데이터만 반환하도록 설계된 API

 

API의 종류

  1. Open API (Public API)
    • 누구나 접근 가능한 API
      예) 구글 지도 API, 트위터 API
  2. Private API
    • 내부 시스템 간에만 사용되는 API
      예) 회사 내부 애플리케이션 간의 데이터 교환
  3. Partner API
    • 특정 파트너나 협력 업체에만 제공되는 API
      예) 결제 대행 업체가 제공하는 API
  4. Composite API
    • 여러 API를 호출하고, 그 결과를 합쳐 하나의 작업을 수행하도록 설계된 API

 

API의 구성 요소

  1. 요청(Request)
    • API 사용자는 클라이언트에서 특정 요청을 보냄
    • HTTP 요청 방식
      • GET: 데이터를 가져올 때 사용
      • POST: 데이터를 생성할 때 사용
      • PUT: 데이터를 업데이트할 때 사용
      • DELETE: 데이터를 삭제할 때 사용
  2. 응답(Response)
    • 요청에 대한 결과를 반환
    • 주로 JSON 또는 XML 형식으로 제공
    • 상태 코드: 걍 여기 눌러서 링크 참고
      • 200: 성공
      • 201: 리소스 생성 성공
      • 400: 잘못된 요청
      • 401: 인증 실패
      • 403: 권한 없음
      • 404: 요청한 리소스를 찾을 수 없음
      • 500: 서버 오류
      • 503: 서비스 불가
      • 몇개만 쓰려다 길어져서 때려치고 위에 링크 붙여넣음
  3. 인증(Authentication)
    • API는 보안을 위해 인증을 요구
      • API 키: 고유한 키로 인증
      • OAuth: 토큰 기반 인증 방식 (제 3자 접근을 허용하며 보안 토큰 사용)
      • JWT: JSON Web Token을 활용한 인증 (간결하고 자체적으로 인증 데이터를 포함하지만 토큰 크기가 클 수 있음)

 

 

API 사용 사례

  1. 데이터 공유
    • 모바일 앱에서 서버의 데이터를 가져오기 위해 API를 호출
      예) 날씨 앱이 날씨 데이터를 가져오기 위해 API를 사용
  2. 서드파티 통합
    • 외부 서비스와 통합
      예) 결제 게이트웨이(Stripe, PayPal) 연동
  3. 자동화
    • API를 이용하여 반복 작업을 자동화
      예) CI/CD 도구가 코드 업데이트 시 자동 빌드 및 테스트 수행
  4. 마이크로서비스 아키텍처
    • 개별 서비스 간에 데이터를 교환하기 위해 API 사용

 

API 설계의 핵심

  1. RESTful API
    • REST 아키텍처 스타일을 따르는 API
    • 경량화되고 확장성이 높음
    • URL 기반 리소스 접근
  2. GraphQL API
    • 필요한 데이터만 쿼리할 수 있도록 설계
    • 과다 요청 및 응답을 줄임
  3. 버전 관리
    • API는 시간이 지남에 따라 변경되므로 버전 관리를 잘해야 함
  4. 문서화
    • API 사용 방법, 요청 및 응답 예시를 제공
    • Swagger, Postman 같은 도구를 활용

        RESTful API GraphQL
      설계 리소스 중심 설계 쿼리 중심 설계
      데이터 전송 방식 과다한 데이터 전송 가능성 필요한 데이터만 요청 가능
      장점 단순 직관적 필요한 데이터만 가져옴
      단점 불필요한 데이터를 가져올 수 있음 초기 설정 복잡할 수 있음
      /users, /users/123 {user(id: 123) {name,email}}
  •  

 

API를 활용하는 도구

  1. Postman
    • API 요청 및 응답 테스트 도구
  2. Swagger/OpenAPI
    • API 문서화 및 테스트 플랫폼
  3. cURL
    • 명령줄에서 API 요청을 보내고 응답 확인

 

에러 처리 예시

{
  "status": 404,
  "error": "Not Found",
  "message": "The requested resource was not found on the server."
}

 

 


 

공부를 역행하는 느낌임.. 

더 파려면 팔 게 많은데, 더 못하겠다 머리에 넣고 빼고 정리하기 귀찮아서.

OpenAI API를 활용하고 streamlit을 이용해서 웹 서비스를 개발해보자는게 제가 제공받은 강의의 목적입니다.

제공받은 강의 구경하다가 심심해서 걍 들음. 그러다가 API에 꽂혀서 정리해봄. 더 하고싶은데 누가 살 좀 붙여주시오.

그리구.. 틀린거 있어도 난 모름...있다면 말해조요.... 

 

VSCode설치하고 https://platform.openai.com 여기 들어가서 크레딧 충전하랍니다.

아직도 이 글을 보고 있다면 VSCode에서 뭐.. 확장... 가상환경.....뭐..파일..폴더... 만들기 이런건 다른데서 보세요.

열다섯개 강의 중에 두개들었는데 벌써 지친다. (ㅎㅎㅎㅎㅎㅎㅎㅎㅎ 님들은 조금 남은 제 힘이라도 다 들고가서 힘 나(?)주세요~!)

 

'OpenAI API 활용' 카테고리의 다른 글

streamlit run app.py  (8) 2024.12.16
streamlit hello  (10) 2024.12.15
Streamlit  (5) 2024.12.13
터미널로 GPT를 만나봄  (7) 2024.12.12
Canvas-12 Days of OpenAI: Day 4  (3) 2024.12.11