Lala's tower

코랩 이용 API서버 만들기 1

코랩 이용 API서버 만들기 1

2024-05-25 13:26:52

API서버 만들기를 서버없이 만들어 테스트하는 과정을 정리하였습니다. colab을 이용하면 flask로 만든 API 서버를 실행할 수 있습니다. 배포, 서비스하기는 어렵겠고 테스트 용도로 활용하시면 되겠습니다. 카카오 챗GPT봇으로 응용해볼 예정입니다.

API서버 만들기 과정

파이썬 flask를 이용하면 간단한 코드로 API서버를 만들 수 있습니다. 배포하고 서비스를 런칭하려면 클라우드 서버에 올리는 것이 좋겠습니다만 기능을 만들어보고 테스트하는 과정에는 코랩도 좋겠습니다. 다만, 코랩은 외부접속 도메인이 제공되지 않습니다. 이 문제는 ngrok 이라는 서비스를 활용하면 됩니다.
과정을 정리하였습니다.

  1. 파이썬 FastAPI로 API 코드 작성

  2. ngrok 실행을 코드에 포함하여 실행

  3. 외부 접속 URL로 확인

파이썬 FastAPI로 API 코드 작성

API를 호출하면 "안녕~ 반가워~" 리턴하는 예제입니다.
코랩에서 실행하려면 먼저, flask 패키지를 설치해야 하므로

!pip install fastapi uvicorn nest_asyncio

가 필요합니다.

# API서버 만들기 필요한 패키지 설치
!pip install fastapi uvicorn nest_asyncio

# nest_asyncio, FastAPI, uvicorn 가져오기
import nest_asyncio
from fastapi import FastAPI
import uvicorn

# FastAPI 애플리케이션 작성
app = FastAPI()

@app.get("/")
def read_root():
    return {"안녕~": "반가워~~"}

# nest_asyncio 적용
nest_asyncio.apply()

# Uvicorn을 사용하여 FastAPI 서버 실행
if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

ngrok 실행을 코드에 포함하여 실행

ngrok을 이용하면 내PC도 외부 접속 가능한 서버가 될 수 있습니다. 코랩도 가능합니다. 먼저 ngrok에 접속하여 회원 가입 후 YourAuthToken을 복사하여 아래 코드에 반영한 후 코랩에서 실행하면 됩니다.

!pip install pyngrok fastapi uvicorn nest_asyncio

# API서버 만들기 필요한 패키지 설치
!pip install pyngrok fastapi uvicorn nest_asyncio

# Ngrok, nest_asyncio, FastAPI, uvicorn 가져오기
from pyngrok import ngrok
import nest_asyncio
from fastapi import FastAPI
import uvicorn

# Ngrok 인증 토큰 설정 (여기에 자신의 Ngrok 인증 토큰을 붙여 넣으세요)
ngrok.set_auth_token("여기에_인증_토큰을_붙여넣으세요")

# FastAPI 애플리케이션 작성
app = FastAPI()

@app.get("/")
def read_root():
    return {"안녕~": "반가워~~"}

# Ngrok 터널 시작
public_url = ngrok.connect(8000)
print("Public URL:", public_url)

# nest_asyncio 적용
nest_asyncio.apply()

# Uvicorn을 사용하여 FastAPI 서버 실행
uvicorn.run(app, host="0.0.0.0", port=8000)

코랩 이용 API서버 만들기 결과 화면

외부 접속 URL로 확인

위 코드를 코랩에서 실행하면 로그 화면 아래에 "ngrok-free.app/"로 끝나는 URL이 보입니다.
이 링크를 브라우저 새로운 탭에서 열기하면 페이지가 보이는데, 가운데 "Visit Site"라는 파란색 버튼이 보입니다.
이것을 클릭하여 아래 결과 화면이 보이면 성공입니다.

{
  "안녕~": "반가워~~"
}

파이썬 기본 문법 code
파이썬 문법 기초 정리
이름으로 성별,나이,나라 판단하는 Open API 파이썬 예제
파이썬 flask를 이용한 홈페이지