From 2e6ac1a9b4dcd5aa79fd6327ab5f331c4021de60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sat, 21 Feb 2026 12:19:54 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20Add=20source=20example=20for=20b?= =?UTF-8?q?ytes=20in=20JSON?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs_src/json_base64_bytes/__init__.py | 0 .../json_base64_bytes/tutorial001_py310.py | 46 +++++++++++++++++++ pyproject.toml | 1 + 3 files changed, 47 insertions(+) create mode 100644 docs_src/json_base64_bytes/__init__.py create mode 100644 docs_src/json_base64_bytes/tutorial001_py310.py diff --git a/docs_src/json_base64_bytes/__init__.py b/docs_src/json_base64_bytes/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/docs_src/json_base64_bytes/tutorial001_py310.py b/docs_src/json_base64_bytes/tutorial001_py310.py new file mode 100644 index 000000000..3262ffb7f --- /dev/null +++ b/docs_src/json_base64_bytes/tutorial001_py310.py @@ -0,0 +1,46 @@ +from fastapi import FastAPI +from pydantic import BaseModel + + +class DataInput(BaseModel): + description: str + data: bytes + + model_config = {"val_json_bytes": "base64"} + + +class DataOutput(BaseModel): + description: str + data: bytes + + model_config = {"ser_json_bytes": "base64"} + + +class DataInputOutput(BaseModel): + description: str + data: bytes + + model_config = { + "val_json_bytes": "base64", + "ser_json_bytes": "base64", + } + + +app = FastAPI() + + +@app.post("/data") +def post_data(body: DataInput): + content = body.data.decode("utf-8") + return {"description": body.description, "content": content} + + +@app.get("/data") +def get_data() -> DataOutput: + data = "hello".encode("utf-8") + return DataOutput(description="A plumbus", data=data) + + +@app.post("/data-in-out") +def post_data_in_out(body: DataInputOutput) -> DataInputOutput: + return body diff --git a/pyproject.toml b/pyproject.toml index 1e6fda3b1..92b473945 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -548,6 +548,7 @@ ignore = [ "docs_src/security/tutorial005_an_py39.py" = ["B904"] "docs_src/security/tutorial005_py310.py" = ["B904"] "docs_src/security/tutorial005_py39.py" = ["B904"] +"docs_src/json_base64_bytes/tutorial001_py310.py" = ["UP012"] [tool.ruff.lint.isort] known-third-party = ["fastapi", "pydantic", "starlette"]