FastAPI 是一个高性能的 Web 框架,它可以帮助开发者快速构建 API 应用程序。它使用 Python 语言,并且支持多种 Web 框架,包括 Flask、Django 和 Tornado。FastAPI 也可以用于创建表单应用程序。
FastAPI 表单是一种特殊的 Web 应用程序,它允许用户在 Web 页面上输入数据并提交表单。FastAPI 表单可以使用 HTML 标记语言来创建,也可以使用 JavaScript 来创建功能强大的表单。
from fastapi import FastAPI, Form app = FastAPI() @app.post("/login") def login(username: str = Form(...), password: str = Form(...)): if username == "admin" and password == "secret": return {"message": "Welcome!"} else: return {"message": "Bad username or password"}
上面的代码是一个使用 FastAPI 创建表单的例子。在这个例子中,我们使用 FastAPI 的 Form 类来声明 username 和 password 字段,然后在函数中对这些字段进行校验。如果校验通过,就会返回一条信息“Welcome!”;如果校验不通过,就会返回一条信息“Bad username or password”。
FastAPI 还有很多高级功能可以帮助开发者快速创建表单应用程序。例如,它可以帮助开发者快速生成 HTML 表单代码、自动生成文本字段、复选框、下拉列表、日期字段等内容。此外,FastAPI 还具有数据验证功能,可以帮助开发者快速核对表单中的数据是否正确无误。
FastAPI 支持同时使用 File 和 Form 定义文件和表单字段。
说明
接收上传文件或表单数据,要预先安装 python-multipart。
例如,pip install python-multipart。
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: bytes = File(...), fileb: UploadFile = File(...), token: str = Form(...)
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
创建文件和表单参数的方式与 Body 和 Query 一样:
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: bytes = File(...), fileb: UploadFile = File(...), token: str = Form(...)
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
文件和表单字段作为表单数据上传与接收。
声明文件可以使用 bytes 或 UploadFile 。
警告
可在一个路径操作中声明多个 File 与 Form 参数,但不能同时声明要接收 JSON 的 Body 字段。因为此时请求体的编码为 multipart/form-data,不是 application/json。
这不是 FastAPI 的问题,而是 HTTP 协议的规定。
在同一个请求中接收数据和文件时,应同时使用 File 和 Form。
通过向规则参数添加变量部分,可以动态构建URL。此变量部分标记为variable-name。它作为关键字参数传递给与规则相关联的函数。在...
Web API 的工作通常与 HTTP 动词紧密相关,所以这使得实现这样一个基于MethodView类的 API 很有意义。也就是说,你会注意到 ...
为了在请求/响应周期之外测试基于类的视图,你必须确保它们配置正确,在实例化之后调用 setup()。例如,假设基于类的视图如...
简介dynamic-datasource-spring-boot-starter是一个基于springboot的快速集成多数据源的启动器。其支持Jdk1.7+,Spring...
动态SQL中的插入脚本语言MyBatis从3.2版本开始支持插入脚本语言,这允许你插入一种语言驱动,并基于这种语言来编写动态SQL查询语...
Spring 有可能成为所有企业应用程序的一站式服务点,然而,Spring 是模块化的,允许你挑选和选择适用于你的模块,不必要把剩余部...
JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。语法格式如下: %@ directive attribute="value" %指令可...
Swift 字典Swift 字典用来存储无序的相同类型数据的集合,Swift 数组会强制检测元素的类型,如果类型不同则会报错。Swift 字典每...