from typing import Optional
from fastapi import FastAPI
import uvicorn
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
app = FastAPI()
@app.post("/items/")
def create_item(item: Item):
return item
if __name__ == '__main__':
uvicorn.run(app, host="0.0.0.0", port=8000)
해당 코드 실행하고 localhost:8000/items/로 접속하면,
💡 브라우저에 localhost:8000/items 주소를 직접 입력하는 것 자체가 GET 방식
하지만 현재 코드는 POST Method에 대한 코드만 존재
따라서 GET Method는 에러가 발생
→ 이에 따라 클라이언트와 유사하게 test 파이썬 파일을 생성
import requests
item_data = {
"name": "Example Item",
"description": "This is an example item",
"price": 9.99
}
response = requests.post("http://localhost:8000/items", json=item_data)
print(response.json())
requests.post 이용해 GET이 아닌 POST Method 접근

from fastapi import FastAPI, Form, Request
from fastapi.templating import Jinja2Templates
import uvicorn
app = FastAPI()
templates = Jinja2Templates(directory='./')
@app.get("/login/")
def get_login_form(request: Request):
return templates.TemplateResponse('login_form.html', context={'request': request})
@app.post("/login/")
def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}
if __name__ == '__main__':
uvicorn.run(app, host="0.0.0.0", port=8000)
해당 코드도 app.get(”/login/”) 부분 없이 에러 발생
localhost:8000/login/ 접속한다는 것 → GET Method
따라서 app.get(”/login/”) 없으면 위 예시와 같이 에러
이를 해결하기 위해 GET으로 html 먼저 받은 후, POST 실행
