POST 작업

FastAPI 입문

Matt Eckerle

Software and Data Engineering Leader

GET vs. POST 작업

GET 작업

  • 전통적 용도: 객체 정보 요청

  • 매개변수는 쿼리 문자열로 전달

  • 웹 브라우저에서도 전송 가능

api = "http://moviereviews.co/reviews/1"
response = requests.get(api)

POST 작업

  • 전통적 용도: 새 객체 생성

  • 매개변수는 쿼리 문자열과 본문으로 전달

  • 애플리케이션 또는 프레임워크 필요

    • 예: cURL, requests
api = "http://moviereviews.co/reviews/"
body = {"text": "A great movie!"}
response = requests.post(api, json=body)
FastAPI 입문

HTTP 요청 본문

  • 데이터는 HTTP 요청 헤더 뒤에 전송
  • 헤더가 본문 인코딩을 지정
  • 중첩 데이터 구조 지원
  • API에서 JSON, XML이 가장 일반적
  • JSON은 FastAPI 기본 인코딩

JSON 예시

# 영화 리뷰 레코드 생성
{"movie": "The Neverending Story",
 "review": {"num_stars": 4,
            "text": "Great movie!",
            "public": true}}
FastAPI 입문

pydantic의 BaseModel 사용

pydantic: 요청/응답 본문 스키마 정의 인터페이스

참고

MovieReview 안에 Review를 중첩합니다

from pydantic import BaseModel

class Review(BaseModel):
    num_stars: int
    text: str
    public: bool = False

class MovieReview(BaseModel):
    movie: str
    # Nest Review in MovieReview
    review: Review
FastAPI 입문

POST 작업 처리

새 영화 리뷰를 생성하는 POST 엔드포인트:

  • 엔드포인트: /reviews
  • 입력: MovieReview(이전 슬라이드)
  • 출력: db_review(다른 곳에서 정의)
@app.post("/reviews", response_model=DbReview)
def create_review(review: MovieReview):
    # Persist the movie review to the database
    db_review = crud.create_review(review)
    # Return the review including database ID
    return db_review
1 https://fastapi.tiangolo.com/tutorial/sql-databases/#crud-utils
FastAPI 입문

연습해 봅시다!

FastAPI 입문

Preparing Video For Download...