用于表单数据的 FastAPI Textarea OpenAPI

FastAPI Textarea OpenAPI for Form Data

我正在为 API 使用 Form Data 格式。问题是我将如何通过使用 textarea 使 OpenAPI 输入更大?

遗憾的是,目前还无法实现。

FastAPI 正在使用 Swagger-UI for the API preview. This particular issue was reported a while back. See issues #1578 and #1795。这些问题在没有解决的情况下被关闭。

我遇到了同样的问题。但是当我添加 type="input" (这是一个相当反模式)时,FastAPI 开始工作。

<form method="post" id="complain_form">
<div class="form-group">
    <label for="complain">Customer complains:</label>
    <textarea type="input" class="form-control" name="complain" id="complain" rows="3"></textarea>
</div>
<button type="submit" class="btn btn-success">Submit</button>
</form>

我已经破解了。

我的方法是在指定字段名时,将input(type=text)改为textarea。 首先,
您为文档提供 self-hosting javascript 和 css。 https://fastapi.tiangolo.com/advanced/extending-openapi/#self-hosting-javascript-and-css-for-docs.

秒,
你像这样更改 javascript 源代码。

                    var is_textarea = false;
                    // when fieldname is info_body, change to textarea
                    if(i === "info_body") {
                        is_textarea = true;
                    }
                    return l && "file" === l ? D.a.createElement(d, {
                        type: "file",
                        className: o.length ? "invalid" : "",
                        title: o.length ? o : "",
                        onChange: this.onChange,
                        disabled: h
                    }) :( !is_textarea ? D.a.createElement(kr.a, {
                        type: c && "password" === c ? "password" : "text",
                        className: o.length ? "invalid" : "",
                        title: o.length ? o : "",
                        value: n,
                        minLength: 0,
                        debounceTimeout: 350,
                        placeholder: i,
                        onChange: this.onChange,
                        disabled: h
                    }) : (D.a.createElement("textarea",{
                        className: o.length ? "invalid" : "",
                        title: o.length ? o : "",
                        value: n,
                        minLength: 0,
                        debounceTimeout: 350,
                        placeholder: i,
                        onChange: this.onChange,
                        disabled: h
                    }))) // here!

你可以破解 css 以获得更漂亮的效果,但我不需要它。 享受。