9.2 퀴즈 및 실습 과제

약 7분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

9.2 퀴즈 및 실습 과제

이 섹션에서는 여러분이 학습한 내용을 기반으로 퀴즈와 실습 과제를 통해 자신을 점검하고, 실제 웹 애플리케이션을 개발하는 경험을 쌓겠습니다. 실습은 FastAPI를 이용하여 REST API를 구축하는 것을 중심으로 진행됩니다.

퀴즈

  1. FastAPI의 주요 특징은 무엇인가요?
  2. REST API란 무엇인지 간단히 설명해주세요.
  3. JSON의 장점은 무엇인가요?
  4. CRUD란 무엇인지, 각 용어의 의미를 설명해주세요.
  5. JWT는 무엇이며, 왜 사용하는지 설명해주세요.

실습 과제

실습 프로젝트: 간단한 도서 관리 API

이 프로젝트에서는 SQLite를 데이터베이스로 사용하여 도서 정보를 CRUD(Create, Read, Update, Delete)할 수 있는 REST API를 구현합니다.

요구사항

  1. FastAPI를 사용하여 기본적인 API 엔드포인트를 설정합니다.
  2. 도서를 추가하는 API 엔드포인트 작성하기
    • HTTP 메서드: POST
    • 요청 데이터 예:
      {  
        "title": "책 제목",  
        "author": "저자",  
        "published_date": "2023-01-01"  
      }  
      
  3. 도서 정보를 조회하는 API 엔드포인트 작성하기
    • HTTP 메서드: GET
    • URI 예시: /books/{book_id}
  4. 도서 정보를 수정하는 API 엔드포인트 작성하기
    • HTTP 메서드: PUT
    • 요청 데이터 예:
      {  
        "title": "새 책 제목"  
      }  
      
  5. 도서를 삭제하는 API 엔드포인트 작성하기
    • HTTP 메서드: DELETE
    • URI 예시: /books/{book_id}
  6. MySQL 데이터베이스로 이전
    • SQLite에서 MySQL로 데이터베이스 연결 변경
    • SQLAlchemy ORM을 사용하여 모델 정의

과제를 완료한 후, Postman 또는 cURL을 사용하여 API를 테스트해보세요!

코드 python
from fastapi import FastAPI  
from pydantic import BaseModel  
from typing import List  
import sqlite3  
  
app = FastAPI()  
  
class Book(BaseModel):  
    id: int  
    title: str  
    author: str  
    published_date: str  
  
DATABASE = 'books.db'  
  
@app.post('/books/')  
def create_book(book: Book):  
    conn = sqlite3.connect(DATABASE)  
    cursor = conn.cursor()  
    cursor.execute('INSERT INTO books (title, author, published_date) VALUES (?, ?, ?)',  
                   (book.title, book.author, book.published_date))  
    conn.commit()  
    conn.close()  
    return {'message': 'Book added', 'book_id': book.id}  
  
@app.get('/books/{book_id}')  
def read_book(book_id: int):  
    conn = sqlite3.connect(DATABASE)  
    cursor = conn.cursor()  
    cursor.execute('SELECT * FROM books WHERE id = ?', (book_id,))  
    book = cursor.fetchone()  
    conn.close()  
    return {'id': book[0], 'title': book[1], 'author': book[2], 'published_date': book[3]}  
  
@app.put('/books/{book_id}')  
def update_book(book_id: int, book: Book):  
    conn = sqlite3.connect(DATABASE)  
    cursor = conn.cursor()  
    cursor.execute('UPDATE books SET title = ? WHERE id = ?', (book.title, book_id))  
    conn.commit()  
    conn.close()  
    return {'message': 'Book updated'}  
  
@app.delete('/books/{book_id}')  
def delete_book(book_id: int):  
    conn = sqlite3.connect(DATABASE)  
    cursor = conn.cursor()  
    cursor.execute('DELETE FROM books WHERE id = ?', (book_id,))  
    conn.commit()  
    conn.close()  
    return {'message': 'Book deleted'}

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.