HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
장지원 페이지/
🔧
Development
/
fastapi / virtual environment

fastapi / virtual environment

다중 선택
backend
위키독스위키독스1-03 FastAPI 개발 환경 준비하기
1-03 FastAPI 개발 환경 준비하기

1-03 FastAPI 개발 환경 준비하기

이제 본격적으로 FastAPI를 이용한 웹 개발 환경을 준비해 보자. 그전에 여러분이 알아야 할 중요한 개념이 하나 있다. 바로 파이썬 가상 환경이다. 우리는 FastAPI를 파…

위키독스위키독스
FastAPI 설치 및 실행
FastAPI 설치 및 실행

FastAPI 설치 및 실행

모던 파이썬 문법을 따르기 때문에, 3.6 이상 설치해야한다.Python 언어는 같지만, 다른 프레임워크는 어떻게 실행할까?공통적으로 위의 두 프레임워크는 개발용 서버를 내장하고 있기 때문에 가능하다.FastAPI는 가지고 있지 않지만, 개발용 서버를 갖기 위해 uvi

[fastAPI]

what
django 같은 웹 프레임워크
virtual enviroment setting
가상 환경 세팅은 다음 명령어로 할 수 있다. → 블로그 참고
본인 가상 환경 이름 python3 -m venv fastapi_virtual
run
uvicorn main:app -reload
test code
structure
이 정도는 알아야 한다!
  • router
  • endpoint

Router와 Endpoint를 식당에 비유해서 설명해드리겠습니다:
Router (라우터) → 걍 폴더라고 이해하자.
  • 식당의 각 부서(주방, 음료바, 디저트 섹션)와 같습니다
  • 관련된 기능들을 묶어서 관리합니다
  • 예시:
Endpoint (엔드포인트) → 걍 파일(함수)이라고 이해하자.
  • 식당에서 실제 각각의 서비스(음료 주문, 음식 주문, 계산)와 같습니다
  • API에서 실제 요청을 처리하는 특정 URL입니다
  • 예시:
즉, Router는 관련 Endpoint들을 묶어서 관리하는 '그룹' 역할을 하고, Endpoint는 실제로 특정 기능을 수행하는 '개별 기능' 역할을 합니다.

swagger UI
django에서 UI로 보여주었던 것 처럼 FastAPI에서도 swagger UI를 통해서 시각적으로 편하게 확인할 수 있다.
http://127.0.0.1:8000/docs
http://127.0.0.1:8000/redoc
PUT/GET/POST/DELETE
HTTP 메서드인 PUT, GET, POST, DELETE에 대해 설명해드리겠습니다:
  1. GET
  • 데이터를 조회할 때 사용
  • 서버에서 데이터를 가져오기만 함
  • 데이터를 변경하지 않는 안전한 메서드
  1. POST
  • 새로운 데이터를 생성할 때 사용
  • 서버에 데이터를 제출/추가
  • 주로 새로운 리소스 생성에 사용
  1. PUT
  • 기존 데이터를 수정/갱신할 때 사용
  • 리소스를 완전히 대체
  • 해당 리소스가 없으면 새로 생성
  1. DELETE
  • 데이터를 삭제할 때 사용
  • 지정된 리소스를 제거
예시와 함께 각각의 특징:
이러한 메서드들은 RESTful API의 기본이 되며, CRUD(Create, Read, Update, Delete) 작업을 구현하는데 사용됩니다:
  • Create → POST
  • Read → GET
  • Update → PUT
  • Delete → DELETE
 

개발 내용

 
dummy data 사용 방법: docs에 들어가서 login → front code token update → auth 인증 (자물쇠 버튼) → 원하는 것 upload
 
1. 이미지/이름 업로드
2. 달력 제작
3. 마이그레이션
4. 도커로 실행
6. 도커에서 DB 수정
7. 도커에서 mysql 보는 법
8. sql 수정하는 법 + re-build
#9. FastAPI admin
python -m venv [name]
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"message": "Hello, World!"}
python Copy # users_router: 사용자 관련 모든 기능 담당 /users/login /users/signup /users/profile # products_router: 상품 관련 모든 기능 담당 /products/list /products/detail /products/search
python Copy @router.get("/users/profile")# GET 엔드포인트 def get_profile(): return {"name": "Kim"} @router.post("/users/login")# POST 엔드포인트 def login(): return {"status": "success"}
python Copy @app.get("/users/{user_id}") def read_user(user_id: int): return {"user_id": user_id}
python Copy @app.post("/users/") def create_user(user: User): return {"message": "User created", "user": user}
python Copy @app.put("/users/{user_id}") def update_user(user_id: int, user: User): return {"message": "User updated", "user_id": user_id}
python Copy @app.delete("/users/{user_id}") def delete_user(user_id: int): return {"message": "User deleted", "user_id": user_id}
python Copy from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class User(BaseModel): name: str email: str # GET - 사용자 정보 조회 @app.get("/users/{user_id}") def read_user(user_id: int): return {"user_id": user_id} # POST - 새 사용자 생성 @app.post("/users/") def create_user(user: User): return user # PUT - 사용자 정보 수정 @app.put("/users/{user_id}") def update_user(user_id: int, user: User): return {"user_id": user_id, "user": user} # DELETE - 사용자 삭제 @app.delete("/users/{user_id}") def delete_user(user_id: int): return {"message": f"User {user_id} deleted"}