728x90
반응형

FastAPI 12

[FastAPI] 12. Update: PUT, PATCH

PUT, PATCHPUT 요청은 전체 객체를 대체하는 데 사용클라이언트가 전체 객체를 제공하여 서버에 저장된 기존 객체를 완전히 대체@app.put("/items/{item_id}", response_model=Item)async def update_item(item_id: str, item: Item): update_item_encoded = jsonable_encoder(item) items[item_id] = update_item_encoded return update_item_encodedPATCH 요청은 부분 업데이트에 사용클라이언트가 업데이트하려는 필드만 제공하고, 나머지 필드는 그대로 유지exclude_unset 옵션True로 설정 시: Pydantic 모델에서 설정되지 않은..

[FastAPI] 11. JSON 호환 인코더: jsonable_encoder

jsonable_encoderFastAPI에서는 데이터 타입(Pydantic 모델 등)을 JSON 호환 형태(예: dict, list 등)로 변환해야 하는 경우 사용ex) 데이터베이스에 저장할 때, JSON으로 응답할 때작동원리 예시Pydantic 모델 변환: Pydantic 모델을 딕셔너리로 변환datetime 변환: datetime 객체를 ISO 형식의 문자열로 변환UUID 변환: UUID 객체를 문자열로 변환Enum 변환: Enum 객체를 해당 값으로 변환set 변환: set 객체를 리스트로 변환JSON 호환 형태 반환: 최종적으로 JSON으로 직렬화할 수 있는 Python 표준 데이터 구조(딕셔너리, 리스트 등)를 반환from datetime import datetimefrom fastapi im..

[FastAPI] 10. Form Data & Request File

Form과 FileHTML의 form()은 데이터를 서버에 전송할 때 JSON과 다른 인코딩 방식을 사용하기에 Form()을 사용해서 처리Form 안에서 파일 업로드를 하는 부분에 대해서는 File()이나  UploadFile() 형식으로 처리즉, HTML의 form 안에 있는 데이터를 처리할 때, 파일 형식이라면 File(), UploadFile()을 쓰고 나머지는 Form() 사용 Username: Password: File: Upload from typing import Annotatedfrom fastapi import FastAPI, Form, File, UploadFileapp = Fast..

[FastAPI] 9. Extra Data Types

주요 데이터 타입 예시UUID: 전역적으로 고유한 식별자, 문자열로 표현Universally Unique Identifier주로 데이터베이스 및 시스템에서 고유 ID로 사용32개의 16진수 문자로 표현되며, 8-4-4-4-12 형식의 다섯 그룹으로 구분request와 response에서는 string으로 나타냄 ex) 123e4567-e89b-12d3-a456-426614174000datetime.datetime날짜와 시간, ISO 8601 형식의 문자열로 표현request와 response에서는 string으로 나타냄ex) 2008-09-15T15:53:00+05:00datetime.date날짜, ISO 8601 형식의 문자열로 표현request와 response에서는 string으로 나타냄 ex) 2..

[FastAPI] 8. Fields

FieldPydantic 모델 내부의 필드에서 모델 속성에 대해 추가 메타데이터 및 유효성 검사를 설정할 때 사용지금까지는 FastAPI 경로 함수의 매개변수에 대해서 Query, Path, Body를 사용기능은 유사하나 Field 함수는 Pydantic 모델 안에서 위와 같은 기능을 설정한다는 차이가 있음from typing import Annotatedfrom fastapi import Body, FastAPIfrom pydantic import BaseModel, Fieldapp = FastAPI()class Item(BaseModel): name: str description: str | None = Field( default=None, title="The descripti..

[FastAPI] 5. Query Parameters(Annotated, Query)

Annotated와 Queryfrom typing import Annotatedfrom fastapi import FastAPI, Queryapp = FastAPI()@app.get("/items/")async def read_items(q: Annotated[str | None, Query(max_length=50)] = None): results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} if q: results.update({"q": q}) return resultsAnnotated는 typing에서 Query는 fastapi에서 Import 가능 (Python 3.9 이상 기준)Annotated의 목적은 파라미터 타..

[FastAPI] 4. Request Body

Reqeust Body클라이언트가 API에 데이터를 전송할 때 사용즉, 클라이언트가 API로 보내는 데이터가 Request Body(Response Body는 API가 클라이언트로 보내는 데이터)API는 거의 항상 Response Body을 보내야 하지만, 클라이언트는 항상 Request Body을 보낼 필요는 없음Request Body를 선언하기 위해 FastAPI에서는 Pydantic model을 상속받아 사용Pydantic: API에서 입력받는 데이터의 구조와 유형을 정의하는 데 사용. 데이터의 유효성을 자동 검증하고, 올바른 유형 변환데이터의 무결성을 보장, API의 신뢰성과 사용성 증가!from fastapi import FastAPIfrom pydantic import BaseModelclas..

[FastAPI] 3. 쿼리 매개변수(Query Parameters)

쿼리 매개변수from fastapi import FastAPIapp = FastAPI()fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}]@app.get("/items/")async def read_item(skip: int = 0, limit: int = 10): return fake_items_db[skip : skip + limit]경로 매개변수에 포함되어 있지 않은 매개 변수들은 자동으로 쿼리 매개변수(query parameter)로 인식이 예시에서는 skip, limit이 query parameter쿼리는 URL의 ? 뒤에 오는 키-값 쌍 집합을 의미하고 각각의 변수들은 &로 구분ex) http..

728x90
반응형