整套解决方案:怎么给测试开发框架 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(&#39;/project/{id}&#39;)def project(id=Path(...)):

  return id

  获取查询字符串可能如下所示:

  @app.get(&#39;/project/{id}&#39;)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(&#39;/project/&#39;)def project():

   return {"msg": "projects"}

  状态代码和响应标头

  def project():

   return JSONResponse(

       {"msg": "hello"},

       status_code=200,

       headers={&#39;you&#39;: &#39;ok&#39;}

   )

  返回

  

  定义项目():

  内容 = “””

  世界您好

  “””

  返回回复(内容)

  返回文件

  要读取文件,必须首先安装库 aiofile。

  pip install aiofiles

  然后使用文件响应

  def project():

   return FileResponse(&#39;yy.jpg&#39;)

  或直接下载文件:

  定义项目():

  返回文件响应(“文件路径.xls”,文件名=“下载的文件.xls”

  )。

  返回视频

  def 文件():

  文件 = 打开(“演示.mp4”, “rb”)

  返回流响应(文件,media_type=“视频/mp4”)

  但是这个会立即读取视频,如果它很大,加载速度会很慢:

  执行此操作的最佳方法是通过*敏*感*词*一次返回指定大小的数据:

  def get_video(file):

   with open(file, &#39;rb&#39;) as f:

       while True:

           chuck = f.read(5000)

           if chuck:

               yield chuck

           else:

               break

def file():

   return StreamingResponse(

       get_video(&#39;抖音拍摄-吃苹果-花絮1.mp4&#39;),

       media_type=&#39;video/mp4&#39;

       )

  大家还是有疑问,欢迎在评论区留言

  作者:柠檬班软件测试——专注最新前沿的软件测试技术,解决您的测试技术烦恼,有意软件测试的朋友赶快来关注我们吧!

  解决方案:Kontent Machine

  Kontent Machine 是自动采集为英文搜索引擎优化生成相关内容的最新软件。只需输入关键词,Kontent Machine会自动采集生成与你的关键词相关的文章,该软件结合了Spinrewriter、The best spinner和WordAI伪原创软件,自动生成的内容可读性很强。进入关键词自动生成可读性依赖文章这不是重点,重点是Kontent Machine有一个Export Templates,用Kontent Machine导出的内容可以直接放入SEnuke XCr,Ultimate Demon,文章用于机器人等软件的营销。

  

  输入你的关键词,根据你的网络速度和代理的质量,Kontent Machine会在短时间内生成数百篇规模不错的文章,并且100%的文章与你的关键词 &gt;,生成的文章可以直接导入以上7款实用的英文SEO软件直接发布。Kontent Machine 自动生成相关的文章标题、标签、文章类别、文章摘要,包括文章末尾的文章来源。Kontent Machine 软件可以自动为数百个社交书签网站生成描述。Kontent Machine可以自动采集和关键词相关的图片、视频等素材,支持图片、视频自动插入文章,图片和视频的位置和大小可以自己设置。锚文本的类型可以设置为 Html、BBcode 和 Wiki 形式。Kontent Machine方便快捷,采用一键快速设置模式,输入关键词,然后等待文章生成。

  

  Kontent Machine软件界面有一个快速设置任务的按钮,左侧*敏*感*词*闪电按钮,输入关键词,简单设置,然后点击开始自动采集Relevance文章 &gt;和伪原创处理后,可以预览生成文章、书签描述、标签等一系列东西的效果。生成过程中可以使用私有代理,这样采集的内容更丰富,速度更快。采集完成后,您可以使用Kontent Machine软件内置的预设模板导出各种文章内容,然后直接导入您喜欢的SEO软件中使用。不需要做太多的设置。Kontent Machine软件的整个流程是,输入关键词,插入锚文本,锚文本位置,是否插入视频图像,视频图像的大小和位置,包括锚文本位置等都可以根据需要进行调整。然后等待软件完成工作。接下来将生成的内容导出,就可以直接使用了。作为强大的 SEO 内容生成工具,Kontent Machine 可以为您节省至少一半的时间。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线