๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐™‹๐™ฎ๐™ฉ๐™๐™ค๐™ฃ/๐™๐™–๐™จ๐™ฉ ๐˜ผ๐™‹๐™„5

Fast API๋กœ ๋ฐฑ์—”๋“œ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ [1] ๊ฒŒ์‹œํŒ์„ ๋ณด๋‹ˆ 2์›”์— Fast API๋ฅผ ๊ณต๋ถ€ํ–ˆ๋˜ ํ”์ ์ด ์žˆ์—ˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” ์„œ๋ฒ„๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด์•ผํ•˜๋‹ˆ ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ณด๋‹ค flask๋กœ ๋งŒ๋“œ๋Š”๊ฒŒ ํŽธํ•ด์„œ ์ž ์‹œ ์ ‘์–ด๋‘์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ flask๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ผ์ •์‹œ๊ฐ„๋งˆ๋‹ค ์œ ์ €์ •๋ณด๋ฅผ ์ทจํ•ฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์กฐ๊ธˆ์”ฉ ๋‚ด ์—…๋ฌด ์˜์—ญ์— ๋„“ํ˜€์ ธ์„œ ํ”„๋ก ํŠธ์™€ ํ†ต์‹ ํ•˜๋Š” ์„œ๋ฒ„๋‹จ์—์„œ ๋‚ด์ชฝ์œผ๋กœ ๊ฐ„๊ฐ„ํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•ด ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ๋‹ค. ์ด๋ฒˆ์—๋„ flask๋กœ ๋งŒ๋“ค๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ด์„œ ์ž˜๋˜์–ด ๋ฐฐํฌ๋ฅผ ํ–ˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ๋ฉ์ฒญํ•˜๊ฒŒ flask๋ฅผ ์‚ฌ์šฉํ• ๋•Œ๋Š” Flask + uWSGI + Nginx ์„ธํŠธ์™€ ๊ฐ™์ด ์™ธ๋ถ€ ์ž๋ฃŒ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๋Š”๋ฐ flask์— ๋ฌด์ง€ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ด์‹ฌํžˆ ์ด๊ฒƒ์ €๊ฒƒ ๋งŒ์ ธ๋ณด.. 2023. 10. 26.
Fast API ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ #4 body ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ  ๋ฐ›๊ธฐ Fast API ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ #3 pydantic, query, request body Fast API ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ #2 ๊ฒฝ๋กœ ๋™์ž‘ ์ƒ์„ฑ Fast API ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ #1 ํŠน์ง• ๋ฐ ์„ค์น˜ ๋ฐฑ์—”๋“œ๋กœ Django, flask๋งŒ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ๊ฐ€๋ณ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ์— Fast API๋„ ์ข‹๋‹ค๊ณ  ํ•˜์—ฌ ํ•œ๋ฒˆ ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ฃผ์š” ํŠน์ง•์€ ๋‹ค์Œ๊ณผ beomcoder.tistory.com body์— ๋Œ€ํ•ด์„œ ์กฐ๊ธˆ๋” ์ž์„ธํ•˜๊ฒŒ ๊ณต๋ถ€ํ•ด๋ณด๋ ค ํ•œ๋‹ค. from typing import Union from fastapi import FastAPI, Path from pydantic import BaseModel app = FastAPI() # FastAPI()๋ฅผ app์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. class Item(BaseModel): # pydant.. 2023. 2. 23.
Fast API ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ #3 pydantic, query, request body Fast API ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ #2 ๊ฒฝ๋กœ ๋™์ž‘ ์ƒ์„ฑ Fast API ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ #1 ํŠน์ง• ๋ฐ ์„ค์น˜ ๋ฐฑ์—”๋“œ๋กœ Django, flask๋งŒ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ๊ฐ€๋ณ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ์— Fast API๋„ ์ข‹๋‹ค๊ณ  ํ•˜์—ฌ ํ•œ๋ฒˆ ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ฃผ์š” ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•œ๋‹ค. ์šฐ์„ ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ beomcoder.tistory.com REST APIํ˜•์‹์œผ๋กœ ํ•œ๋ฒˆ ์‚ฌ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋จผ์ € pydantic์„ ์•Œ์•„์•ผ ํ•œ๋‹ค. pydantic์€ ํƒ€์ž… ์• ๋„ˆํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ์„ค์ •๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. pydantic์€ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ํƒ€์ž…์„ ๊ฐ•์ œํ•˜๊ณ  ํƒ€์ž…์ด ์œ ํšจํ•˜์ง€ ์•Š์„ ๋•Œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์ค€๋‹ค. FastAPI, Project Jupyter, Microsoft, AWS ๋“ฑ ๋งŽ์€ ๊ณณ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. from typing im.. 2023. 2. 23.
Fast API ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ #2 ๊ฒฝ๋กœ ๋™์ž‘ ์ƒ์„ฑ Fast API ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ #1 ํŠน์ง• ๋ฐ ์„ค์น˜ ๋ฐฑ์—”๋“œ๋กœ Django, flask๋งŒ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ๊ฐ€๋ณ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ์— Fast API๋„ ์ข‹๋‹ค๊ณ  ํ•˜์—ฌ ํ•œ๋ฒˆ ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ฃผ์š” ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•œ๋‹ค. ์šฐ์„ ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์ฃผ์—ˆ๋‹ค. from fastapi import FastAPI beomcoder.tistory.com from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"} ์—ฌ๊ธฐ์„œ ๋™์ž‘์€ '/' ๋‹ค์Œ์— ์˜ค๋Š” ๋ถ€๋ถ„์„ ๋งํ•œ๋‹ค. https://example.com/items/foo ์—์„œ /items/foo ๋ฅผ ๊ฒฝ๋กœ๋ผ๊ณ  ๋งํ•œ๋‹ค. from fastapi import Fas.. 2023. 2. 22.
Fast API ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ #1 ํŠน์ง• ๋ฐ ์„ค์น˜ ๋ฐฑ์—”๋“œ๋กœ Django, flask๋งŒ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ๊ฐ€๋ณ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ์— Fast API๋„ ์ข‹๋‹ค๊ณ  ํ•˜์—ฌ ํ•œ๋ฒˆ ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ฃผ์š” ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•œ๋‹ค. ์šฐ์„ ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์ฃผ์—ˆ๋‹ค. from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"} ๊ทธ๋ฆฌ๊ณ  main.py๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด๋ณด๋ฉด ๋œ๋‹ค. ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ„ฐ๋ฏธ๋„์— uvicorn main:app --reload ์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ์˜ˆ์ œ๋Œ€๋กœ ๋งŒ๋“ค์ง€ ์•Š์•˜๋‹ค๋ฉด ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. study.py๋กœ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด uvicorn study:app --reload์ด๊ณ , app = FastAPI()๋ฅผ my_.. 2023. 2. 22.