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 값을 넣는다면?
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 |