FastAPI POST リクエストにファイルと JSON 本文の両方を追加する方法?
FastAPI では、JSON データとファイルの両方を送信することはできません本文を JSON として宣言した場合は、単一のリクエストになります。代わりに、multipart/form-data エンコーディングを使用する必要があります。これを実現するためのいくつかの方法を次に示します。
方法 1: ファイルとフォームを使用する
# Assuming you have a DataConfiguration model for the JSON data from fastapi import FastAPI, File, UploadFile from pydantic import BaseModel app = FastAPI() class DataConfiguration(BaseModel): textColumnNames: list[str] idColumn: str @app.post("/data") async def data(dataConfiguration: DataConfiguration, csvFile: UploadFile = File(...)): pass # read requested id and text columns from csvFile
方法 2: Pydantic モデルと依存関係を使用する
from fastapi import FastAPI, Form, File, UploadFile, Depends, Request from pydantic import BaseModel from typing import List, Optional, Dict from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates app = FastAPI() templates = Jinja2Templates(directory="templates") class Base(BaseModel): name: str point: Optional[float] = None is_accepted: Optional[bool] = False def validate_json_body(body: str = Form(...)): try: return Base.model_validate_json(body) except ValidationError as e: raise HTTPException( detail=jsonable_encoder(e.errors()), status_code=422, ) @app.post("/submit") async def submit(base: Base = Depends(validate_json_body), files: List[UploadFile] = File(...)): return { "JSON Payload": base, "Filenames": [file.filename for file in files], } @app.get("/", response_class=HTMLResponse) async def main(request: Request): return templates.TemplateResponse("index.html", {"request": request})
方法 3: JSON を渡す本文パラメータの文字列として
from fastapi import FastAPI, Form, UploadFile, File from pydantic import BaseModel class Base(BaseModel): name: str point: float is_accepted: bool app = FastAPI() @app.post("/submit") async def submit(data: Base = Form(...), files: List[UploadFile] = File(...)): return { "JSON Payload": data, "Filenames": [file.filename for file in files], }
方法 4: カスタム クラスを使用して JSON を検証する
from fastapi import FastAPI, File, UploadFile, Request from pydantic import BaseModel, model_validator from typing import Optional, List from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates import json app = FastAPI() templates = Jinja2Templates(directory="templates") class Base(BaseModel): name: str point: Optional[float] = None is_accepted: Optional[bool] = False @model_validator(mode='before') @classmethod def validate_to_json(cls, value): if isinstance(value, str): return cls(**json.loads(value)) return value @app.post("/submit") async def submit(data: Base = Body(...), files: List[UploadFile] = File(...)): return { "JSON Payload": data, "Filenames": [file.filename for file in files], } @app.get("/", response_class=HTMLResponse) async def main(request: Request): return templates.TemplateResponse("index.html", context={"request": request})
注:方法 1 では、Form が Body のサブクラスであるため、File クラスと Form クラスを一緒に使用できます。ただし、方法 1 で Form(...) の代わりに Body(...) を使用すると、FastAPI は JSON データがフォーム データとしてではなくリクエスト本文に含まれることを期待するため、機能しません。
以上がFastAPI POST リクエストで JSON とファイルの両方を送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

inpython、youappendelementStoalistusingtheappend()method.1)useappend()forsingleelements:my_list.append(4).2)useextend()or = formultipleElements:my_list.extend(another_list)ormy_list = [4,5,6] .3)forspecificpositions:my_list.insert(1,5).beaware

シェバンの問題をデバッグする方法には次のものがあります。1。シバン行をチェックして、それがスクリプトの最初の行であり、接頭辞スペースがないことを確認します。 2.通訳パスが正しいかどうかを確認します。 3.通訳を直接呼び出してスクリプトを実行して、シェバンの問題を分離します。 4. StraceまたはTrustsを使用して、システムコールを追跡します。 5.シバンに対する環境変数の影響を確認してください。

pythonlistscanbemanipulatedsingseveralmethodstoremoveElements:1)theremove()methodremovesthefirstoccurrenceofaspecifiedValue.2)thepop()methop()methodremovessanelementatagivenindex.3)thedelstatementementementementementementementementementemoritemoricedex.4)

Integers、strings、floats、booleans、otherlists、anddictionaryを含むpythonlistscanstoreanydatype

PythonListsSupportNumersoperations:1)AddingElementSwithAppend()、Extend()、Andinert()

Numpyを使用して多次元配列を作成すると、次の手順を通じて実現できます。1)numpy.array()関数を使用して、np.array([[1,2,3]、[4,5,6]])などの配列を作成して2D配列を作成します。 2)np.zeros()、np.ones()、np.random.random()およびその他の関数を使用して、特定の値で満たされた配列を作成します。 3)アレイの形状とサイズの特性を理解して、サブアレイの長さが一貫していることを確認し、エラーを回避します。 4)np.reshape()関数を使用して、配列の形状を変更します。 5)コードが明確で効率的であることを確認するために、メモリの使用に注意してください。

BroadcastinginNumPyisamethodtoperformoperationsonarraysofdifferentshapesbyautomaticallyaligningthem.Itsimplifiescode,enhancesreadability,andboostsperformance.Here'showitworks:1)Smallerarraysarepaddedwithonestomatchdimensions.2)Compatibledimensionsare

Forpythondatastorage、chooseLists forfficability withmixeddatypes、array.arrayformemory-efficienthogeneousnumericaldata、およびnumpyArrays foradvancednumericalcomputing.listSareversatilebuteficient efficient forlargeNumericaldatates;


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

WebStorm Mac版
便利なJavaScript開発ツール

ホットトピック









