You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI使用Form Data时如何将OpenAPI输入框设置为大尺寸textarea?

实现方案

你可以通过给Form字段添加额外的OpenAPI Schema配置,让FastAPI默认的Swagger UI文档将对应参数的输入控件渲染为多行textarea,具体实现分两种场景:

场景1:直接通过Form定义参数

在Form参数中添加openapi_extra配置,指定字符串格式为textarea即可:

from fastapi import FastAPI, Form
from typing import Annotated

app = FastAPI()

@app.post("/submit")
async def submit(
    long_content: Annotated[str, Form(
        openapi_extra={
            "schema": {
                "type": "string",
                "format": "textarea"
            }
        }
    )]
):
    return {"content": long_content}

场景2:通过Pydantic模型接收Form数据

如果使用Pydantic模型统一管理Form参数,可以在对应字段的Field配置中添加json_schema_extra配置:

from fastapi import FastAPI, Form, Depends
from pydantic import BaseModel, Field

app = FastAPI()

class ContentForm(BaseModel):
    long_content: str = Field(
        ...,
        description="长文本输入字段",
        json_schema_extra={"format": "textarea"}
    )

    # FastAPI 0.110以下版本需要手动实现as_form方法,0.110+版本及以上可省略该方法,直接声明form_data: ContentForm = Form()即可
    @classmethod
    def as_form(cls, long_content: str = Form(...)):
        return cls(long_content=long_content)

@app.post("/submit")
async def submit(form_data: ContentForm = Depends(ContentForm.as_form)):
    return {"content": form_data.long_content}

调整前的单行输入框样式如下:
原单行输入框样式
配置完成后会自动替换为高度更大的多行textarea,支持输入长文本内容。

注意:该配置仅修改OpenAPI文档的控件展示样式,不会影响接口本身的参数接收逻辑,接口依然可以正常接收Form格式的字符串参数。

内容的提问来源于stack exchange,提问作者Mohamad Aiman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:45:04