
터미널에서 uvicorn 으로 서버를 실행해주고
uvicorn api:app --port 8000 --reload
이제 새로운 터미널창을 열어서, curl로 GET요청을 전송해 애플리케이션이 제대로 실행되는지 테스트해보자
GET 요청을 해주고(curl은 디폴트가 GET 요청 수행)
curl http://127.0.0.1:8000/
todo 라우트가 제대로 실행되는지 확인해보자.
curl -X GET http://127.0.0.1:8000/todo -H "accept:application/json"
# (주의) 터미널에 입력할 땐 한 줄로 입력해줘야한다
curl -X POST http://127.0.0.1:8000/todo
-H "accept: application/json"
-H "Content-Type: application/json"
-d "{\"id\": 1, \"item\": \"First Todo is to finish this book!\"}"
(한줄 Version)
curl -X POST http://127.0.0.1:8000/todo -H "accept: application/json" -H "Content-Type: application/json" -d "{\"id\": 1, \"item\": \"First Todo is to finish this book!\"}"
POST 한 후 새로고침 해보면 todo 내용이 추가되어있다

uvicorn api:app --port 8000 --reload 명령어를 실행하니,
ModuleNotFoundError: No module named 'model'에러가 나왔다.
에러 해결 방법은 링크 참고
타입 어노테이션을 (todo: Todo)로 명시함으로써 요청 데이터 타입을 Todo로 제한할 수 있다.
model.py 파일을 만든 후, Pydantic을 사용하여 데이터 모델을 정의한다.
이 모델은 int형 id와 str인 item. 두 개의 필드만 허용한다.
# model.py
from pydantic import BaseModel
# 두 개의 필드만 허용하는 pydantic 모델 생성
class Todo(BaseModel):
id : int
item : str
모델과 일치하는 데이터를 보내면
curl -X POST http://127.0.0.1:8000/todo -H "accept: application/json" -H "Content-Type: application/json" -d "{\"id\":2, \"item\":\"Validation models helps with input types\"}"