Operasi POST

Pengantar FastAPI

Matt Eckerle

Software and Data Engineering Leader

Operasi GET vs. POST

Operasi GET

  • Umumnya untuk meminta info tentang suatu objek

  • Parameter dikirim via query string

  • Dapat dikirim dari browser web

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

Operasi POST

  • Umumnya untuk membuat objek baru

  • Parameter dikirim via query string serta body permintaan

  • Memerlukan aplikasi atau framework

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

HTTP Request Body

  • Data dikirim setelah header permintaan HTTP
  • Header menentukan encoding body
  • Mendukung struktur data bertingkat
  • JSON dan XML adalah encoding API yang paling umum
  • JSON adalah encoding default FastAPI

Contoh JSON

# Buat record untuk ulasan film
{"movie": "The Neverending Story",
 "review": {"num_stars": 4,
            "text": "Great movie!",
            "public": true}}
Pengantar FastAPI

Menggunakan BaseModel milik pydantic

pydantic: antarmuka untuk mendefinisikan skema body request dan response

Catatan

Kita menempatkan Review di dalam MovieReview

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
Pengantar FastAPI

Menangani Operasi POST

Endpoint POST untuk membuat ulasan film baru:

  • Endpoint: /reviews
  • Input: MovieReview (dari slide sebelumnya)
  • Output: db_review (didefinisikan di tempat lain)
@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
Pengantar FastAPI

Ayo berlatih!

Pengantar FastAPI

Preparing Video For Download...