
- 테이블
- Id(int): 고유 번호 사용
- name(varchar): 상품명
- quantity(int): 수량
- description(varchar): 아이템 설명
- 기능
- 전체 아이템 출력
- 아이템 검색(상품명에 따른 검색)
- 이아템 추가(상품명, 수량 필수 기입)
- 아이템 수정(수량, 설명만 수정 가능)
- 아이템 삭제
stockapp.py 중
class Stock(BaseModel): // Stock 모델 정의 id: int name: str quantity: int description: str class UpdateModel(BaseModel): // Update 시 사용할 모델 정의 quantity: int description: str ... stockapp.py 중 ... @app.put("/stock/{stock_id}") async def put_stock(stock_id: int, update: UpdateModel): // 데이터 업데이트 with app.db_connection.cursor() as cursor: sql = "update stock set quantity = %s, description = %s where id = %s" cursor.execute(sql, (update.quantity, update.description, stock_id)) app.db_connection.commit() return {"message": "stock updated successfully"}함수 제작 시 다양한 변수 사용 시 pydantic 모델로 정의 필요
- 변수로 대입 시 오류 발생(때문에 Stock, Update 모델 각각 정의 필요)
stock.html 중
const response = await fetch('http://공용 IP:8000/stock'); // 네이버에서 공용 IP 검색 const items = await response.json();fetch 시 공용 IP 주소 사용(외부 IP에서 접속 시 필요)
- 내부 IP에서만 사용 시에는 localhost 사용 가능const response = await fetch(`http://공용 IP:8000/stock/${itemId}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({id: id, quantity: quantity, description: description}) });fetch 시 stringify로 stockapp.py의 함수에 필요한 변수 값 전송
- put_stock(id, quantity, description) 사용
uvicorn stockapp:app --host 0.0.0.0 --port 8000 // 서버 가동
- --host 0.0.0.0: 0.0.0.0은 모든 네트워크 인터페이스에서의 요청을 수신하겠다는 의미
- --post 8000: 서버가 수신할 포트를 지정 즉 8000포트로 수신
http://localhost/stock.html 접속
stock테이블과 메인 페이지 정상 연결 확인
메인 페이지
stock 테이블
- GET, localhost:8000/stock을 통해 전체 아이템 값 item에 저장
- for문을 통해 각각의 아이템 출력
상품명으로 검색하기
1. GET, localhost:8000/stock을 통해 전체 아이템 값 item에 저장
2. for문을 통해 item 값을 돌며, 검색 값과 일치할 시 출력
상품 등록
상품명 "나사" 추가
추가 후 메인 페이지
- POST, localhost:8000/stock로 stock테이블에 값 저장
- Id(고유번호) 값은 가장 테이블의 가장 큰 Id의 다음 수로 설정
- 상품명, 수량은 필수
상품 수정
수량 150, 11일로 수정
stock 테이블
수량을 150, 일정 11로 수정
1. PUT, localhost:8000/stock/{itemId}로 업데이트(id, 상품명, 수량)
상품 삭제
"케이블" 삭제
삭제 후 메인 페이지
- "케이블" 삭제 시 DELETE, localhost:8000/stock/{itemId} 전송
- 고유 번호에 맞는 아이템 삭제
- 출력 에러 시 fastAPI에서 CORS 설정 확인하기