분류 전체보기
-
이전 포스팅에서 요청 파라미터를 받지 않는 GET 함수를 정의했다. 이번 포스팅에서는 GET /tasks와 짝을 이루는, POST /tasks에 대응하는 create_task() 함수를 정의해 본다. POST 함수에서는 요청 본문을 받아 데이터를 저장한다. api/routers/task.py 에서 정의한 GET 함수는 id를 가진 Task 인스턴스를 반환했었다. 하지만, 일반적으로 POST 함수에서는 id를 지정하지 않고 DB에서 자동으로 id를 매기는 경우가 많다. 또한 done 필드에 대해서도 Task 작성시에는 항상 false이므로 POST /tasks의 엔드포인트에서 제외한다. 따라서 POST 함수는 요청 본문으로 title 필드만 받도록 해보자. POST 용으로 id, done 필드가 없는..
[FastAPI] [Chapter 10] 스키마 - 요청이전 포스팅에서 요청 파라미터를 받지 않는 GET 함수를 정의했다. 이번 포스팅에서는 GET /tasks와 짝을 이루는, POST /tasks에 대응하는 create_task() 함수를 정의해 본다. POST 함수에서는 요청 본문을 받아 데이터를 저장한다. api/routers/task.py 에서 정의한 GET 함수는 id를 가진 Task 인스턴스를 반환했었다. 하지만, 일반적으로 POST 함수에서는 id를 지정하지 않고 DB에서 자동으로 id를 매기는 경우가 많다. 또한 done 필드에 대해서도 Task 작성시에는 항상 false이므로 POST /tasks의 엔드포인트에서 제외한다. 따라서 POST 함수는 요청 본문으로 title 필드만 받도록 해보자. POST 용으로 id, done 필드가 없는..
2024.10.17 -
스키마에서는 API의 요청과 응답을 정확한 타입으로 정의한다. 이번 장에서는 먼저 응답에 대해 알아본다. 01 응답 타입 정의 api/schemas/task.py from pydantic import BaseModel, Field class Task(BaseModel): id: int title: str | None = Field(None, example="세탁소에 맡긴 것을 찾으러 가기") done: bool = Field(False, description="완료 플래그") 이 파일은 FastAPI의 스키마를 나타낸다. API의 스키마는 API 요청과 응답의 타입을 정의하기 위한 것 이 스키마를 이용하여 실제로 API 응답을 반환할 수 있는지 확인해 본다. api/routers/tas..
[FastAPI] [Chapter 9] 스키마 - 응답스키마에서는 API의 요청과 응답을 정확한 타입으로 정의한다. 이번 장에서는 먼저 응답에 대해 알아본다. 01 응답 타입 정의 api/schemas/task.py from pydantic import BaseModel, Field class Task(BaseModel): id: int title: str | None = Field(None, example="세탁소에 맡긴 것을 찾으러 가기") done: bool = Field(False, description="완료 플래그") 이 파일은 FastAPI의 스키마를 나타낸다. API의 스키마는 API 요청과 응답의 타입을 정의하기 위한 것 이 스키마를 이용하여 실제로 API 응답을 반환할 수 있는지 확인해 본다. api/routers/tas..
2024.10.17 -
01 경로 동작 함수에 대하여 경로 동작 함수는 경로와 동작의 조합이다.REST API의 엔드포인트와 HTTP 메서드에 각각 대응된다. ToDo 앱을 만들기 위해 라우터에는 다음과 같은 6가지 경로 동작 함수를 정의하게 된다.- GET /tasks- POST /tasks- PUT /tasks/{task_id}- DELETE /tasks/{task_id}- PUT /tasks/{task_id}/done- DELETE /tasks/{task_id}/done 02 경로 동작 함수 만들기6개의 함수를 하나의 파일에 담게 되면, 구현 상태에 따라서 파일 크기가 커져서 보기 않 좋을 수 있다. 해당 프로젝트는 처리가 비교적 단순해서 하나의 파일로 묶어도 크게 문제가 되지는 않는다. 하지만, 함수에 기능을 추가할 때..
[FastAPI] [Chapter 8] 라우터01 경로 동작 함수에 대하여 경로 동작 함수는 경로와 동작의 조합이다.REST API의 엔드포인트와 HTTP 메서드에 각각 대응된다. ToDo 앱을 만들기 위해 라우터에는 다음과 같은 6가지 경로 동작 함수를 정의하게 된다.- GET /tasks- POST /tasks- PUT /tasks/{task_id}- DELETE /tasks/{task_id}- PUT /tasks/{task_id}/done- DELETE /tasks/{task_id}/done 02 경로 동작 함수 만들기6개의 함수를 하나의 파일에 담게 되면, 구현 상태에 따라서 파일 크기가 커져서 보기 않 좋을 수 있다. 해당 프로젝트는 처리가 비교적 단순해서 하나의 파일로 묶어도 크게 문제가 되지는 않는다. 하지만, 함수에 기능을 추가할 때..
2024.10.17 -
02 REST APIREST API에서는 HTTP로 정보를 주고받을 때 URL로 모든 '리소스'를 정의한다.리소스를 나타내는 엔드포인트와 HTTP 메서드 (GET/POST/PUT/DELETE 등)을 조합하여 API 전체를 구성한다. REST에 따라 ToDo 앱을 구현하기 위해 필요한 기능을 정리해 본다. - ToDo 리스트 표시하기 - ToDo에 작업 추가하기 - ToDo 작업 설명문을 변경하기 - ToDo 작업 자체를 삭제하기- ToDo 작업에 '완료' 플래그 달기 - ToDo 작업에서 '완료' 플래그 제거하기 이 외에도 날짜순으로 정렬하거나, 수동으로 순서를 바꾸거나, 중첩된 ToDO 작업을 정의할 수 있도록 하는 등, 다양한 기능을 추가한 앱을 만들 수 있다. 이 기능들을 REST API에서,..
[FastAPI] [Chapter 7] 어플리케이션 개요와 디렉토리02 REST APIREST API에서는 HTTP로 정보를 주고받을 때 URL로 모든 '리소스'를 정의한다.리소스를 나타내는 엔드포인트와 HTTP 메서드 (GET/POST/PUT/DELETE 등)을 조합하여 API 전체를 구성한다. REST에 따라 ToDo 앱을 구현하기 위해 필요한 기능을 정리해 본다. - ToDo 리스트 표시하기 - ToDo에 작업 추가하기 - ToDo 작업 설명문을 변경하기 - ToDo 작업 자체를 삭제하기- ToDo 작업에 '완료' 플래그 달기 - ToDo 작업에서 '완료' 플래그 제거하기 이 외에도 날짜순으로 정렬하거나, 수동으로 순서를 바꾸거나, 중첩된 ToDO 작업을 정의할 수 있도록 하는 등, 다양한 기능을 추가한 앱을 만들 수 있다. 이 기능들을 REST API에서,..
2024.10.17 -
01 Hello World! 표시를 위한 파일 작성 지금까지 준비한 환경에서 FastAPI를 실행해본다. 프로젝트 디렉토리에 api 디렉터리를 생성하고 다음 파일을 추가한다. api/__init__.py (빈 파일) api/main.py from fastapi import FastAPIapp = FastAPI()@app.get("/hello")async def hello(): return {"message": "hello world!"} __init__.py 는 이 api 디렉토리가 파이썬 모듈임을 나타내는 빈 파일이다.main.py에는 FastAPI의 코드를 적는다. main.py에서app = FastAPI()를 살펴보자.app은 FastAPI의 인스턴스이다. main.py에서 if __n..
[FastAPI] [Chapter 6] FastAPI 기초 실행 - Hello World!01 Hello World! 표시를 위한 파일 작성 지금까지 준비한 환경에서 FastAPI를 실행해본다. 프로젝트 디렉토리에 api 디렉터리를 생성하고 다음 파일을 추가한다. api/__init__.py (빈 파일) api/main.py from fastapi import FastAPIapp = FastAPI()@app.get("/hello")async def hello(): return {"message": "hello world!"} __init__.py 는 이 api 디렉토리가 파이썬 모듈임을 나타내는 빈 파일이다.main.py에는 FastAPI의 코드를 적는다. main.py에서app = FastAPI()를 살펴보자.app은 FastAPI의 인스턴스이다. main.py에서 if __n..
2024.10.17 -
docker 이미지를 빌드한 WSL 환경에서 진행 01 Poetry를 통한 파이썬 환경 구축 FastAPI를 설치하기 전에 설치에 사용할 Poetry에 대해 알아보자. Poetry는 루비의 Bundler나 자바의 Maven과 같이 파이썬의 패키지 관리를 해 주는 도구이자, 패키지 간의 의존 관계를 해결해 준다.파이썬에서 가장 원시적인 패키지 관리 도구로 pip가 유명하지만, Popetry는 pip가 하지 못하는패키지 간 의존성 해결,lock 파일을 이용한 버전 고정, 파이썬의 가상 환경 관리 등더욱 기능적이고 현대적인 버전 관리를 수행할 수 있게 해준다. Poetry를 사용하는 이유 Poetry는 고도의 패키지 관리 기능을 제공하는데, 그 중 하나인 가상환경 관리 기능은 '환경을 제한하는 것'을 가..
[FastAPI] [Chapter 5] FastAPI 설치docker 이미지를 빌드한 WSL 환경에서 진행 01 Poetry를 통한 파이썬 환경 구축 FastAPI를 설치하기 전에 설치에 사용할 Poetry에 대해 알아보자. Poetry는 루비의 Bundler나 자바의 Maven과 같이 파이썬의 패키지 관리를 해 주는 도구이자, 패키지 간의 의존 관계를 해결해 준다.파이썬에서 가장 원시적인 패키지 관리 도구로 pip가 유명하지만, Popetry는 pip가 하지 못하는패키지 간 의존성 해결,lock 파일을 이용한 버전 고정, 파이썬의 가상 환경 관리 등더욱 기능적이고 현대적인 버전 관리를 수행할 수 있게 해준다. Poetry를 사용하는 이유 Poetry는 고도의 패키지 관리 기능을 제공하는데, 그 중 하나인 가상환경 관리 기능은 '환경을 제한하는 것'을 가..
2024.10.17