hgk0404.tistory
Code After Work
hgk0404.tistory

๊ณต์ง€์‚ฌํ•ญ

  • ๋ธ”๋กœ๊ทธ
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ
    • [์ปดํ“จํ„ฐ๋น„์ „]
    • [MLOps]
      • [FastAPI]
    • [Computer Science]
      • [์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ]
      • [์•Œ๊ณ ๋ฆฌ์ฆ˜]
      • [์ž๋ฃŒ๊ตฌ์กฐ in C]
      • [C & C++]
      • [์ด์‚ฐ์ˆ˜ํ•™]
      • [Math]
    • [AI]
      • [Numpy, Pandas]
    • [Cloud]
      • [AWS]
      • [NCP]
      • [Kubernetes]
      • [Terraform]
    • [Dev]
      • [๊ฐ€์ƒํ™˜๊ฒฝ]
      • [Linux]
      • [Docker]
    • [Python]
    • [Coding Test]
      • [๋ฐฑ์ค€]
      • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]
      • [SQL]
    • [WEB]
    • [์ผ์ƒ]
    • [์—‘์…€]
    • [๊ธˆ์œต]

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
hgk0404.tistory

Code After Work

[FastAPI] FastAPI ๊ตฌ์กฐํ™” ์˜ˆ์ œ ํŠœํ† ๋ฆฌ์–ผ, ํด๋” ๊ตฌ์„ฑ๊ณผ ๋ผ์šฐํ„ฐ ๋ถ„๋ฆฌ
[MLOps]/[FastAPI]

[FastAPI] FastAPI ๊ตฌ์กฐํ™” ์˜ˆ์ œ ํŠœํ† ๋ฆฌ์–ผ, ํด๋” ๊ตฌ์„ฑ๊ณผ ๋ผ์šฐํ„ฐ ๋ถ„๋ฆฌ

2025. 7. 21. 23:00
728x90

๐ŸŽฏ ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

 

[FastAPI] FastAPI ์‹œ์ž‘ํ•˜๊ธฐ: ์„ค์น˜๋ถ€ํ„ฐ ๋กœ์ปฌ ์„œ๋ฒ„ ์‹คํ–‰๊นŒ์ง€ ๋”ฐ๋ผํ•˜๊ธฐ

Python์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ฐฑ์—”๋“œ API๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด FastAPI๋Š” ํ›Œ๋ฅญํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” FastAPI ์„ค์น˜๋ถ€ํ„ฐ ๊ฐ„๋‹จํ•œ API ์„œ๋ฒ„ ์‹คํ–‰๊นŒ์ง€ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.๊ฐœ๋ฐœ ํ™˜๊ฒฝ: Ubuntu 22.04 LTS(WSL)ํŒŒ์ด์ฌ

hgk5722.tistory.com

 

FastAPI๋กœ ๊ฐ„๋‹จํ•œ API๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด, ์ด์ œ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์กฐํ™”ํ•ด๋ณด๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์ฒด๊ณ„์ ์ธ ํด๋” ๊ตฌ์„ฑ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ผ์šฐํ„ฐ, ์Šคํ‚ค๋งˆ, ์œ ํ‹ธ ํ•จ์ˆ˜๊นŒ์ง€ ๋ถ„๋ฆฌ๋œ FastAPI ํด๋” ๊ตฌ์กฐ ์˜ˆ์ œ๋ฅผ ์†Œ๊ฐœํ•˜๊ณ , ์‹ค์ œ ์‹คํ–‰ ๋ฐ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•๊นŒ์ง€ ์•ˆ๋‚ดํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ผ์šฐํ„ฐ, ์Šคํ‚ค๋งˆ ๊ด€๋ จ ์„ค๋ช…์€ ์ด์ „ ๊ธ€์— ์ž‘์„ฑํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. 

 

[FastAPI] FastAPI router, schemas

FastAPI๋ฅผ ๊ณต๋ถ€ํ•˜๋Š”๋ฐ router, schemas, ๊ฐ์ฒด(app)์˜ ๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ด€๊ณ„๋“ค์— ๋Œ€ํ•ด ์ดํ•ดํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.1. FastAPI RouterFastAPI๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹จ์ˆœํ•˜๊ฒŒ API ์„ค๊ณ„

hgk5722.tistory.com

 

1๏ธโƒฃ. ํด๋” ๊ตฌ์กฐ ์„ค๋ช… 

์•„๋ž˜์™€ ๊ฐ™์€ ํด๋” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค.

fastapi-v1/
โ””โ”€โ”€ app_v1/
    โ”œโ”€โ”€ main.py
    โ”œโ”€โ”€ router/
    โ”‚   โ”œโ”€โ”€ __init__.py   โœ… ๋ผ์šฐํ„ฐ ๋“ฑ๋ก์šฉ
    โ”‚   โ””โ”€โ”€ hello.py
    โ”œโ”€โ”€ schemas/
    โ”‚   โ””โ”€โ”€ hello.py
    โ”œโ”€โ”€ utilities/
    โ”‚   โ””โ”€โ”€ helpers.py
    โ””โ”€โ”€ config.py

๐Ÿ“Œ ๊ด€๋ จ ์ฝ”๋“œ ๊นƒํ—ˆ๋ธŒ์—์„œ ํ•œ๋ฒˆ์— ํ™•์ธํ•˜๊ธฐ

 

FastAPI-v1/app_v1 at main · hgk0404-v2/FastAPI-v1

๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ์— ์ž‘์„ฑํ•œ FastAPI ๊ด€๋ จ ํฌ์ŠคํŒ… ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. Contribute to hgk0404-v2/FastAPI-v1 development by creating an account on GitHub.

github.com

2๏ธโƒฃ. ์ฝ”๋“œ 

๐Ÿ”น 1. app_v1/main.py 

from fastapi import FastAPI
from routers import hello
import uvicorn

app = FastAPI()

# ๋ผ์šฐํ„ฐ ๋“ฑ๋ก
app.include_router(hello.router)

if __name__ == "__main__":
    uvicorn.run("main:app", host="0.0.0.0", port=8081, reload=True)

 

๐Ÿ”น 2. app_v1/ config.py 

# ์„ค์ • ์˜ˆ์‹œ
APP_NAME = "FastAPI Example"
VERSION = "0.1.0"

 

๐Ÿ”น 3. routers/hello.py 

from fastapi import APIRouter
from schemas.hello import HelloRequest, HelloResponse
from utilities.helpers import greet_user

router = APIRouter(prefix="/hello", tags=["hello"])

@router.post("/", response_model=HelloResponse)
def say_hello(req: HelloRequest):
    message = greet_user(req.name)
    return HelloResponse(message=message)

๐Ÿ”น 3-1. routers/__init__.py 

๋ชจ๋“ˆํ™”๋ฅผ ์œ„ํ•œ ํŒŒ์ผ์œผ๋กœ ๊ทธ๋ƒฅ ๋นˆ ํŒŒ์ผ๋กœ ๋†”๋‘์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ”น 4. schemas/hello.py 

from pydantic import BaseModel

class HelloRequest(BaseModel):
    name: str

class HelloResponse(BaseModel):
    message: str

 

๐Ÿ”น 5. utilities/helpers.py 

def greet_user(name: str) -> str:
    return f"Hello, {name}! ๐Ÿ‘‹"

 

3๏ธโƒฃ. ์‹คํ–‰

์ €๋ฒˆ ํฌ์ŠคํŒ… ๋•Œ ์ƒ์„ฑํ–ˆ๋˜ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

# ์‹คํ–‰ (ํฌํŠธ๋Š” 8081๋ฒˆ)
python main.py

OpenAPI๋กœ ์ ‘์†ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

http://127.0.0.1:8081/docs

127.0.0.1:8081/docs

OpenAPI๋กœ Post /hello์— ์ ‘์†ํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

4๏ธโƒฃ. ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ• 

Try it out์„ ์ž…๋ ฅํ•˜์—ฌ "name"์— ์›ํ•˜๋Š” ๋‚ด์šฉ์„ ์ž…๋ ฅํ•œ ๋’ค execute๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” name์˜ value์— "๋ฉœ๋ก "์„ ๋„ฃ์—ˆ๊ณ 

๊ฒฐ๊ณผ:

  • Response body์— "๋ฉœ๋ก "์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • routers/hello.py์—์„œ from utilities.helpers import greet_uesr๋ฅผ ํ•ด์ฃผ์—ˆ๊ณ , helpers.py์—์„œ greet_user๊ฐ€ ์ธ์ž๋กœ "๋ฉœ๋ก "์„ ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์ด ์ถœ๋ ฅ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ Swagger UI๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๋ฉฐ, request/response ๋ชจ๋ธ๋„ ์ž๋™์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ˜‘๏ธ ํด๋” ๋ถ„๋ฆฌ: 

  • ์ง„์ž…์ (main), ๋ผ์šฐํ„ฐ, ์Šคํ‚ค๋งˆ, ์œ ํ‹ธ ๋ถ„๋ฆฌ
  • Uvicorn์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  Swagger๋กœ ํ…Œ์ŠคํŠธ

๋‹ค์Œ ์‹œ๊ฐ„์—” ์ด ๊ตฌ์กฐ ์œ„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™, ์ธ์ฆ ๊ธฐ๋Šฅ, ๋ฏธ๋“ค์›จ์–ด ์„ค์ •๋“ค์„ ์ถ”๊ฐ€ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

728x90
์ €์ž‘์žํ‘œ์‹œ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)

'[MLOps] > [FastAPI]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[FastAPI] FastAPI ์‹œ์ž‘ํ•˜๊ธฐ: ์„ค์น˜๋ถ€ํ„ฐ ๋กœ์ปฌ ์„œ๋ฒ„ ์‹คํ–‰๊นŒ์ง€ ๋”ฐ๋ผํ•˜๊ธฐ  (0) 2025.07.21
[FastAPI] FastAPI router, schemas  (0) 2025.07.18
'[MLOps]/[FastAPI]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [FastAPI] FastAPI ์‹œ์ž‘ํ•˜๊ธฐ: ์„ค์น˜๋ถ€ํ„ฐ ๋กœ์ปฌ ์„œ๋ฒ„ ์‹คํ–‰๊นŒ์ง€ ๋”ฐ๋ผํ•˜๊ธฐ
  • [FastAPI] FastAPI router, schemas
hgk0404.tistory
hgk0404.tistory
๊ณต๋ถ€๊ธฐ๋ก

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”