728x90
반응형

Python 20

[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] 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..

[FastAPI] 2. 경로 매개변수(Path Parameters)

경로 매개변수(Path parameters)from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")async def read_item(item_id): return {"item_id": item_id}path에 {}로 둘러싸인 부분은 path parameter를 나타냄/items/{item_id}에서 {item_id}는 path paramterURL 경로의 일부로서 변수 값을 전달받을 수 있도록 함클라이언트가 http://127.0.0.1:8000/items/42 와 같은 URL로 요청을 보내개 되면 path paramter인 item_id에는 '42'라는 값이 들어감from fastapi import FastAPIapp = Fa..

[FastAPI] 1. 간단한 FastAPI 만들기

FastAPI 애플리케이션 기본 구조from fastapi import FastAPIapp = FastAPI()@app.get("/")async def root(): return {"message": "Hello World"}Import FastAPIfrom fastapi import FastAPIFastAPI는 API에 대한 모든 기능을 제공하는 Python 클래스Create a FastAPI "Instance"app = FastAPI() FastAPI application insatnce 생성 Instance를 가지고 앞으로 사용할 API경로를 정의하고 각 경로에 대한 요청을 처리하는 엔드포인트(함수)를 등록하는데 사용API를 만드는데 있어서의 중심점 역할을 하는 instanceDefine a ..

[Python] 제너레이터(Generator)

제너레이터(Generator)이터레이터(Iterator)를 간단히 생성해주는 함수일반적인 함수처럼 정의되지만, 값을 반환할 때 return 대신 yield 사용제너레이터 함수는 호출될 때 실행되지 않고, 제너레이터 객체를 반환이터레이터 프로토콜를 따름yield 키워드: 값을 생성하고, 함수의 실행 상태를 유지. 다음 next() 호출 시 이 상태로 다시 실행을 시작지연 평가: 값을 필요할 때마다 하나씩 생성하여 메모리 사용을 줄임def gen(): yield 'a' yield 'b' yield 'c' g = gen()next(g) # 'a'next(g) # 'b'next(g) # 'c'next(g) # StopIteration모든 제너레이터는 이러에티러를 만드므로 제너레이터 객체는 이터레..

[Python] 이터레이터(Iterator)

이터레이터(Iterator)반복 가능한 객체를 순회할 수 있는 객체반복 가능한 객체란? -> List, tuple, set 등반복 가능한 객체 != 이터레이터 반복 가능한 객체 == 이터러블(iterable) 객체 (반복가능하면 이터레이터로 만들 수 있는 것)이터러블 객체는 __iter__() method를 가지고 있고, 이 method는 이터레이터를 반환하는 역할이터러블 객체는 iter() 함수를 이용하여 이터레이터로 만들 수 있mylist = [1, 2, 3]next(mylist)Traceback (most recent call last):File "", line 1, in TypeError: 'list' object is not an iterator# Iterable하다는 것이 Iterator라는 ..

728x90
반응형