
HTTP ν΅μ μμ Status Codeλ μλ²κ° ν΄λΌμ΄μΈνΈμκ² λ³΄λ΄λ βκ²°κ³Ό μ νΈβλ€.
μ°λ¦¬κ° μλΉμμ μ£Όλ¬Ένλ©΄
κ°μ λ§λ‘ μν©μ μ λ¬νλ―, μλ²λ μμ² μ²λ¦¬ κ²°κ³Όλ₯Ό μ«μ μ½λλ‘ μλ €μ€λ€.
Status Codeλ 3μ리 μ«μλ‘ κ΅¬μ±λμ΄ μμΌλ©°, μμ²μ΄ μ΄λ€ μνλ‘ μ²λ¦¬λμλμ§λ₯Ό λνλΈλ€.
μ€μν μ μ μ΄κ²μ΄λ€.
μ¦,
μ΄ λμ νμ ν¨κ» μμ§μ΄μ§λ§ μλ―Έλ μ ν λ€λ₯΄λ€.
λ¨Όμ κ°μ₯ κΈ°λ³Έμ μΈ FastAPI μ½λλ₯Ό 보μ.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello"}
μ΄ APIλ₯Ό νΈμΆνλ©΄ μ΄λ€ μν μ½λκ° λμ¬κΉ?
μ΄λ²μλ μν μ½λλ₯Ό λͺ μμ μΌλ‘ μ§μ ν΄λ³΄μ.
@app.post("/items/", status_code=201)
async def create_item(name: str): return {"name": name}
μ΄ APIλ λ€μμ μλ―Ένλ€.
κ·Έλμ 201 Createdκ° λ°νλλ€.
HTTP μν μ½λλ 첫 λ²μ§Έ μ«μμ λ°λΌ μλ―Έκ° λλλ€.
| λ²μ | μλ―Έ | μ€λͺ |
|---|---|---|
| 1xx | μ 보 | μμ²μ λ°μκ³ μ²λ¦¬ μ€ |
| 2xx | μ±κ³΅ | μμ²μ΄ μ μ μ²λ¦¬λ¨ |
| 3xx | 리λ€μ΄λ μ | λ€λ₯Έ μμΉλ‘ μ΄λ νμ |
| 4xx | ν΄λΌμ΄μΈνΈ μ€λ₯ | μμ² μ체μ λ¬Έμ μμ |
| 5xx | μλ² μ€λ₯ | μλ² λ΄λΆ λ¬Έμ |
2xxλ βμμ²μ΄ μ μ²λ¦¬λμλ€βλ μλ―Έλ€.
| μ½λ | μ΄λ¦ | μλ―Έ | μ£Ό μ¬μ© μν© |
|---|---|---|---|
| 200 | OK | μμ² μ±κ³΅ | μ‘°ν, μμ |
| 201 | Created | 리μμ€ μμ± μλ£ | POST |
| 204 | No Content | μ±κ³΅νμ§λ§ λ°ν λ°μ΄ν° μμ | DELETE |
4xxλ βμμ²ν μͺ½(ν΄λΌμ΄μΈνΈ)μ λ¬Έμ κ° μλ€βλ λ»μ΄λ€.
| μ½λ | μ΄λ¦ | μλ―Έ | λν μν© |
|---|---|---|---|
| 400 | Bad Request | μλͺ»λ μμ² | μμ² λ°μ΄ν° μ€λ₯ |
| 401 | Unauthorized | μΈμ¦ νμ | λ‘κ·ΈμΈ μ λ¨ |
| 403 | Forbidden | κΆν μμ | μ κ·Ό λΆκ° |
| 404 | Not Found | 리μμ€ μμ | ID μμ |
μν μ½λλ λ¨μν μ«μκ° μλλ€.
νλ‘ νΈμλ, λͺ¨λ°μΌ μ±, λ€λ₯Έ μλ²λ€μ Status Codeλ₯Ό κΈ°μ€μΌλ‘ λ‘μ§μ λΆκΈ°νλ€.
μν μ½λλ λ¨λ
μΌλ‘ 보면 κ°μ΄ μ μ μ¨λ€.
μμ² β νλ¨ β μλ΅ νλ¦μΌλ‘ 보면 λͺ
νν΄μ§λ€.
ν΄λΌμ΄μΈνΈ μμ²
β
μμ² λ°μ΄ν° κ²μ¦
β
μΈμ¦ νμΈ
β
κΆν νμΈ
β
리μμ€ μ‘΄μ¬ μ¬λΆ
β
μ μ μ²λ¦¬
| λ¨κ³ | λ¬Έμ λ°μ μ | λ°ν μ½λ |
|---|---|---|
| μμ² λ°μ΄ν° μ€λ₯ | νμ/κ° μλͺ»λ¨ | 400 |
| μΈμ¦ μ λ¨ | λ‘κ·ΈμΈ νμ | 401 |
| κΆν μμ | μ κ·Ό λΆκ° | 403 |
| 리μμ€ μμ | ID μμ | 404 |
| μ μ μ²λ¦¬ | - | 200 / 201 / 204 |
@app.post("/items/", status_code=201)
async def create_item(name: str):
return {"name": name}
from fastapi import FastAPI, status
app = FastAPI()
@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
return {"name": name}
@app.delete("/items/{item_id}", status_code=status.HTTP_204_NO_CONTENT)
async def delete_item(item_id: int):
return None
| μμ | HTTP λ©μλ | κΆμ₯ μν μ½λ |
|---|---|---|
| Create | POST | 201 Created |
| Read | GET | 200 OK |
| Update | PUT / PATCH | 200 OK |
| Delete | DELETE | 204 No Content |