← Back to Tutorials

8. REST Architecture

HTTP Methods

MethodCRUDFastAPI Decorator
GETRead@app.get()
POSTCreate@app.post()
PUTUpdate (full)@app.put()
PATCHUpdate (partial)@app.patch()
DELETEDelete@app.delete()

RESTful Design Principles

# Resources as nouns, not verbs
# GOOD
GET    /users          # List users
GET    /users/{id}     # Get user
POST   /users          # Create user
PUT    /users/{id}     # Update user
DELETE /users/{id}     # Delete user

# BAD
GET    /get_users
POST   /create_user
POST   /delete_user

Status Codes

from fastapi import FastAPI, status

@app.post("/items/", status_code=status.HTTP_201_CREATED)
def create_item():
    return {"item": "created"}

@app.delete("/items/{id}", status_code=status.HTTP_204_NO_CONTENT)
def delete_item(id: int):
    return  # No body for 204
✏️ Exercise: Design RESTful endpoints for a blog API (posts, comments, users). Implement the GET and POST endpoints using FastAPI decorators.