인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

YH K님의 프로필 이미지
YH K

작성한 질문수

실전! FastAPI 입문

(실습) PATCH API - 수정

갑자기 웹페이지 수정사항이 적용되질 않습니다.

해결된 질문

작성

·

179

0

from fastapi import FastAPI, Body
from pydantic import BaseModel  # 쉽게 requestbody(입력받는 함수인자) 처리

app = FastAPI()  # 앱이란 객체에 api연결해서 서버를 띄우면 HTTP요청 보낼 수 있다.


@app.get("/")
def health_check_handler():
    return {"ping": "pong"}


todo_data = {
    1: {
        "id": 1,
        "contests": "실전! FastAPI 섹션 0 수강",
        "is_done": False,
    },
    2: {
        "id": 2,
        "contests": "실전! FastAPI 섹션 1 수강",
        "is_done": False,
    },
    3: {
        "id": 3,
        "contests": "실전! FastAPI 섹션 2 수강",
        "is_done": False,
    }
}


@app.get("/todos")
def get_todos_handler(order: str | None = None):
    ret = list(todo_data.values())
    if order and order == "DESC":
        return ret[::-1]
    return ret


@app.get("/todos/{todo_id}")
def get_todo_handler(todo_id: int):
    return todo_data.get(todo_id, {})


class CreateTodoRequest(BaseModel):
    id: int
    contests: str
    is_done: bool


@app.post("/todos")
def create_todo_handler(request: CreateTodoRequest):
    todo_data[request.id] = request.dict()
    return todo_data[request.id]


@app.patch("/todos/{todo_id}")
def update_todo_handler(
        todo_id: int,
        is_done: bool = Body(..., embed=True),
):
    todo = todo_data.get(todo_id)
    if todo:
        todo["is_done"] = is_done
        return todo
    return {}

해당 코드까지 진행했고, (todos) PS C:\Users\yhkim\inflern_project\todos\src> uvicorn main:app --reload로 실행했는데 어느순간부터 웹페이지가 수정사항이 적용되지 않습니다.

 

답변 2

0

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요. Ctrl + C로 서버를 종료했다가 다시 실행 해보시겠어요?

아니면 다른 에러로 인해서 reload가 동작하지 않을 수도 있으니 콘솔 창에 출력되는 에러메시지를 확인 부탁드립니다.

0

안녕하세요, 인프런 AI 인턴입니다.

YH K님께서 제공해주신 코드와 설명을 바탕으로, 웹페이지에서 수정 사항이 적용되지 않는 문제에 대해 알아보겠습니다. 코드 상에 눈에 띄는 큰 문제는 보이지 않으나, 문제의 원인은 여러 가지가 될 수 있습니다.

  1. 캐시 문제: 브라우저에서 이전 버전의 캐시된 내용을 로드하고 있는 경우가 있습니다. 웹페이지 새로고침 시에는 Ctrl + F5(Windows) 또는 Command + Shift + R(Mac)을 사용해 강제 새로고침을 시도해 보세요.

  2. Hot Reload 문제: FastAPI는 --reload 옵션을 사용하여 개발 중인 코드의 변경사항이 자동으로 적용되도록 할 수 있습니다. 하지만 가끔 올바르게 작동하지 않을 수 있습니다. 이 경우, uvicorn 서버를 완전히 종료한 후 다시 시작해보세요.

  3. 오타 및 문법 오류: 코드 내에 오타나 미세한 문법 오류가 있을 수 있으니, 이를 철저히 확인하는 것이 좋습니다. 예를 들어, 여러분의 코드에서 "contests"라는 항목은 아마도 "contents"가 되어야 할 것 같습니다.

이와 유사한 문제를 다루는 질문 중 하나가 있으나, 해당 질문은 ORM과 HTTP 응답 처리에 관한 내용입니다:

질문에 직접적인 답변이 없으므로, 위의 추천사항을 바탕으로 문제를 해결해 보시길 바랍니다. 만약 이후에도 문제가 지속된다면, 보다 구체적인 오류 메시지 또는 서버 로그를 함께 제공해 주시면, 다른 해결 방안을 모색하는 데 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

YH K님의 프로필 이미지
YH K

작성한 질문수

질문하기