inflearn logo
강의

講義

知識共有

Python APIマスター! FastAPI

エンドポイントとHTTPメソッド!

엔드포인트와 HTTP 메서드! / 질문

解決済みの質問

298

iceicebear

投稿した質問数 5

1

강의 상에 설명으로는 이해가 부족하여 질문 합니다.
1. 앞에 작성한 코드에 코드명이 따로 안나와 있어서 앞 선 코드가(import logging으로 시작하는 코드) main.py가 맞을까요?

  1. 실행 결과가 강의 창(16:14)만으로는 이해가 안되어서 main.py를 'uvicorn main:app' 으로 실행한 후에 client.py를 터미널 상에 실행하면 되는건가요?

ps. 강의자료를 github주소로 기재해주신다고 하셨는데 github주소를 찾을 수 없어서 추가로 문의 드립니다

python sqlalchemy orm FastAPI authentication

回答 2

0

baekoblin

추가 질문이 있으시면 항상 알림을 확인하기 때문에! 빠르게 답변드릴 것이라는 점 약속드립니다 🙂

0

baekoblin

안녕하세요 강사 배코블린입니다!

 

먼저 강의를 수강해주셔서 감사하다는 말씀을 드리고, 피드백에 대해서도 정말 감사인사를 드립니다 :)

 

네 맞습니다!

 

다음의 코드를 main.py에 기입하신 후 uvicorn 명령어로 실행하시면 됩니다!

 

uvicorn의 명령어로 실행하면 main.py의 Fastapi로 구현한 api가 uvicorn 서버로 실행되게 됩니다.

 

그러면 저희는 서버를 오픈한 것이에요! 참고로 uvicorn main:app 명령어는 main 소스코드안의 app 인스턴스를 서버로 실행하는 명령어 입니다! (uvicorn에 대한 강의도 하나 추가해드리면 좋을 듯 하군요!)

 

이제 사용자 코드를 동작시키면 서버에 접속해 API를 사용할 수 있는데, 그 코드가 client.py 코드 입니다!

 

강의 화면 상의 좌측의 출력은 서버의, 우측의 출력은 클라이언트의 출력입니다.

 

현재 이런 식으로 코드가 있지만 강의 내용 자체를 주석으로 추가하는 작업을 진행 중 입니다!

 

모르는 부분이 있을 때 강의를 다시 들으시는 것도 좋지만 바로 설명이 있으면 더 좋을 것 같아서요!

 

이 작업이 완료되면 바로 링크와 강의자료 전자책을 제공해드리겠습니다 🙂

 

감사합니다!

추가 질문이 있으시면 언제든 항상 편하게 남겨주세요!

import logging
from fastapi import FastAPI, Form

logging.basicConfig(level =logging.INFO)
logger = logging.getLogger(__name__)

app = FastAPI()

items = {"1": {"name" : "pen"}, "2":{"name":"pencil"}}

@app.get("/items")
async def read_items():
    logger.info("Fetching all items")
    return items


@app.post("/items/{item_id}")
async def create_item(item_id : str, name: str = Form(...)):
    items[item_id] = {"name": name}
    logger.info(f"item created: {item_id} - {name}")
    return items[item_id]


@app.put("/items/{item_id}")
async def update_item(item_id: str, name :str = Form(...)):
    items[item_id] = {"name" : name}
    logger.info(f"item updated: {item_id} - {name}")
    return items[item_id]

@app.delete("/items/{item_id}")
async def delete_item(item_id: str):
    if item_id in items:
        del items[item_id]
        logger.info(f"item deleted: {item_id}")
        return {"message:" "Item deleted"}
    else:
        logger.info(f"item not found: {item_id}")
        return {"message": "item not found"}

@app.patch("/items/{item_id}")
async def patch_item(item_id: str, name: str =Form(...)):
    if item_id in items:
        items[item_id]["name"] = name
        logger.info(f"Item patched: {item_id} - {name}")
        return items[item_id]
    else:
        logger.info(f"Item not found {item_id}")
        return {"message": "Item not found"}
    

뉴스 검색 분류 한도초과

0

2

1

완성자료

0

4

1

섹션5 노션링크 는 따로 없나요?

0

11

2

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

11

2

Part 4에서 강의 연관 노션 정보들이 워드파일에 없습니다.

0

15

2

첨부자료 Part 4 코드 확인 부탁드리겠습니다.

0

13

2

질문 드립니다.

0

36

2

노션 링크

0

36

3

26년 1회 실기 해설 강의

0

43

2

노션 권한요청하였습니다 언제쯤 볼수있나요

0

34

2

AAFM CWM_LEVEL_2 Exam Questions 2026: Right Preparation Method

0

24

1

강의 내용 관련 질문드립니다~

0

34

2

퍼플렉시티 최소 결제단위 50달러로 바뀐 것 같습니다.

0

37

2

수강 연장 문의

0

30

1

강의자료 일괄 다운로드

0

38

2

강의 소스 코드

1

207

2

강사님의 강의 소스코드

1

210

1

깃허브 레포지토리로 버전관리하기

2

406

1

async, await 질문

1

341

1

파라미터 문의

1

478

4

소스코드는 어디서 받을 수 있나요..?

1

268

1

라우터 함수를 비동기함수로 작성하셨다가 동기함수로 작성하시기도 하는 이유가 궁금합니다.

1

213

1

좀 더 맛깔나게 써봅시다! / 질문

0

327

3

엔드포인트와 HTTP메서드! _ 강좌에서 질문 있습니다

1

264

2