개발로 자기계발
article thumbnail
Published 2022. 12. 23. 06:26
FastAPI Put Request - 21 Develop/FastAPI
728x90

1. PUT

  • 데이터 업데이트


2. 함수 생성

@app.put("/{book_id}")
async def update_book(book_id: UUID, book: Book):
    counter = 0
    for BOOK in BOOKS:
        counter += 1
        if BOOK.id == book_id:
            BOOKS[counter - 1] = book
            return BOOKS[counter - 1]
  • book_id를 경로 매개변수로 UUID로 받고 book을 Book 클래스로 받음.(필수적 매개변수 같이 보이지만 Book 클래스가 정의 되어있음으로 아님)
  • counter라는 변수에 0을 넣으며 초기화
  • BOOKS list를 for문을 돌며 BOOK dict를 한개씩 꺼내서 확인
  • for문이 한번 돌 때마다 counter에 1씩 더하기
  • BOOK dict의 id키의 value를 꺼내서 경로 매개변수로 들어온 book_id와 일치하는 확인
  • 2개의 값이 서로 일치한다면 BOOKS list의 인덱스로 접근해서 book의 값을 넣어줌(여기서 업데이트가 발생)
  • BOOKS list의 인덱스 값을 return


3. Swagger 확인

ex) UUID가 db6d5c1f-0460-4bab-8aa1-a801bf843273인 값을 바꿀 예정

(1) GET 요청으로 현재 BOOKS list의 전체 데이터 값 확인

(2) PUT 요청으로 데이터를 업데이트 할 book_id를 입력

  • 앞서 이야기 했듯이 book은 따로 파라미터로 받는 것이 없다
  • Example Value에 book의 config를 설정한 값들이 잘 보이는 것을 알 수 있다.
  • book_id에 수정 하고 싶은 UUID를 넣고, 수정 할 데이터를 입력한다.


(3) GET 요청으로 현재 BOOKS list의 전체 데이터 값 다시확인

  • PUT으로 update한 값이 GET을 요청 했을 때 파라미터로 넣은 UUID에 해당하는 데이터가 변경 된 것을 볼 수 있다.


4. 에러 사항 확인

  • BOOKS list에 없는 UUID 값을 넣는다면?

따로 에러 코드는 나지 않고 return 되는 값이 없음으로 null을 return 한다.(업데이트가 실패)

728x90
SMALL

'Develop > FastAPI' 카테고리의 다른 글

FastAPI Raise HTTP Exception - 23  (0) 2022.12.24
FastAPI Delete Request - 22  (0) 2022.12.23
FastApi Get By UUID - 20  (0) 2022.12.22
FastAPI Get Request - 19  (0) 2022.12.22
FastAPI BaseModel 구성 - 18  (0) 2022.12.22
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)