整套解决方案:怎么给测试开发框架 FastAPI 编个接口?
优采云 发布时间: 2022-10-14 11:14整套解决方案:怎么给测试开发框架 FastAPI 编个接口?
请求处理和返回响应是任何开发框架的核心。此文章重点介绍如何在 FastAPI 中处理用户的请求参数和响应。
网址路径参数
网址
路径参数是指在 URL 中的斜杠之后传递的参数。例如,如果我们想访问 ID 为 2 的项目,我们可以访问 /project/2 的 URL。
但这 2 每次都会更改,称为 URL 路径参数。
在 FastAPI 中,大括号 {id} 表示动态更改的 URL 参数,然后在函数中,通过同名的 id 作为参数接收。
@app.get('/project/{id}')
def project(id):
return id
查询字符串参数
与 path 参数类似,也可以将 id 作为查询字符串传递。查询字符串由 传递?在网址中由 ?在数字后添加一个参数。例如,/项目/?id=2。
用法类似于 path 参数,它也通过 id 传递给函数。如果未找到 path 参数,则会在查询字符串中查询该字段。
# query string@app.get('/project/')def project(id): return id
获取标头
有时需要在请求中获取标头中的数据,例如,令牌值通常是在请求中的授权中获取的。
您可以向视图函数添加权限=标头(无)关键字参数,以通过授权变量获取标头中的授权字段值。
请注意,参数名称必须与标头中字段的名称匹配。
从快速机场标题
@app('/项目/')
defproject(授权=标头(无)):
返回授权
获取表单表单数据
有时需要在请求中获取表单表单中的数据,例如用户传递的用户名和密码。
您可以分别通过用户名和密码接受表单中的用户名和密码。变量名称与传入的数据字段相同。
从快速资本导入表单
@app('/项目/')
定义项目(用户名=表单(无),密码=表单(无)):
返回用户名
获取正文
获取正文与 header 类似,不同之处在于变量获取所有正文数据字段,而不必像在 header 中那样填写指定的参数名称。
例如,可以通过项 = 正文(无)项变量接收所有正文数据。
请注意,快速 API 中的正文() 对象接收 JSON 格式的数据,如果要接收表单类型的数据,则需要遍历表单()。
@app.post('/login/')def project(user = Body(None)):
return user
假设 JSON 数据在请求中传递:
{
<p>
"username": "yuz",
"pwd": 123}</p>
然后界面中的用户可以获得上述数据。
有关参数的其他说明
快速 API 为每个参数类型定义一个相应的对象:
实际上,获取路径参数可以如下所示:
@app.get('/project/{id}')def project(id=Path(...)):
return id
获取查询字符串可能如下所示:
@app.get('/project/{id}')def project(id=Query(...)):
return id
注意:标头、查询、路径必须具有要读取的相应字段,但正文是读取所有字段。
直接使用请求对象
@app.get(“/items/{item_id}”)
定义read_root(item_id: str, 请求: 请求):
client_host = 请求.客户端.主机
返回 {“client_host”: client_host, “item_id”: item_id}
使用请求对象获取请求对象非常方便。当时,获取表单表单等数据只能调用 request.form() 方法
我们这里得到的是一个协程对象。因此,它需要异步处理:
async def user(req: Request):
user = await req.form()
或者使用异步运行它
def user(req: Request):
user = asyncio.run(req.form())
若要直接获取表单,还可以直接使用 Form 对象。
默认情况下返回 JSON
直接返回字典或列表
@app.get('/project/')def project():
return {"msg": "projects"}
状态代码和响应标头
def project():
return JSONResponse(
{"msg": "hello"},
status_code=200,
headers={'you': 'ok'}
)
返回
定义项目():
内容 = “””
世界您好
“””
返回回复(内容)
返回文件
要读取文件,必须首先安装库 aiofile。
pip install aiofiles
然后使用文件响应
def project():
return FileResponse('yy.jpg')
或直接下载文件:
定义项目():
返回文件响应(“文件路径.xls”,文件名=“下载的文件.xls”
)。
返回视频
def 文件():
文件 = 打开(“演示.mp4”, “rb”)
返回流响应(文件,media_type=“视频/mp4”)
但是这个会立即读取视频,如果它很大,加载速度会很慢:
执行此操作的最佳方法是通过*敏*感*词*一次返回指定大小的数据:
def get_video(file):
with open(file, 'rb') as f:
while True:
chuck = f.read(5000)
if chuck:
yield chuck
else:
break
def file():
return StreamingResponse(
get_video('抖音拍摄-吃苹果-花絮1.mp4'),
media_type='video/mp4'
)
大家还是有疑问,欢迎在评论区留言
作者:柠檬班软件测试——专注最新前沿的软件测试技术,解决您的测试技术烦恼,有意软件测试的朋友赶快来关注我们吧!
解决方案:Kontent Machine
Kontent Machine 是自动采集为英文搜索引擎优化生成相关内容的最新软件。只需输入关键词,Kontent Machine会自动采集生成与你的关键词相关的文章,该软件结合了Spinrewriter、The best spinner和WordAI伪原创软件,自动生成的内容可读性很强。进入关键词自动生成可读性依赖文章这不是重点,重点是Kontent Machine有一个Export Templates,用Kontent Machine导出的内容可以直接放入SEnuke XCr,Ultimate Demon,文章用于机器人等软件的营销。
输入你的关键词,根据你的网络速度和代理的质量,Kontent Machine会在短时间内生成数百篇规模不错的文章,并且100%的文章与你的关键词 >,生成的文章可以直接导入以上7款实用的英文SEO软件直接发布。Kontent Machine 自动生成相关的文章标题、标签、文章类别、文章摘要,包括文章末尾的文章来源。Kontent Machine 软件可以自动为数百个社交书签网站生成描述。Kontent Machine可以自动采集和关键词相关的图片、视频等素材,支持图片、视频自动插入文章,图片和视频的位置和大小可以自己设置。锚文本的类型可以设置为 Html、BBcode 和 Wiki 形式。Kontent Machine方便快捷,采用一键快速设置模式,输入关键词,然后等待文章生成。
Kontent Machine软件界面有一个快速设置任务的按钮,左侧*敏*感*词*闪电按钮,输入关键词,简单设置,然后点击开始自动采集Relevance文章 >和伪原创处理后,可以预览生成文章、书签描述、标签等一系列东西的效果。生成过程中可以使用私有代理,这样采集的内容更丰富,速度更快。采集完成后,您可以使用Kontent Machine软件内置的预设模板导出各种文章内容,然后直接导入您喜欢的SEO软件中使用。不需要做太多的设置。Kontent Machine软件的整个流程是,输入关键词,插入锚文本,锚文本位置,是否插入视频图像,视频图像的大小和位置,包括锚文本位置等都可以根据需要进行调整。然后等待软件完成工作。接下来将生成的内容导出,就可以直接使用了。作为强大的 SEO 内容生成工具,Kontent Machine 可以为您节省至少一半的时间。