首页 > 其他分享 >FastAPI 基础知识——使用 FastAPI 更快

FastAPI 基础知识——使用 FastAPI 更快

时间:2022-09-22 12:34:18浏览次数:91  
标签:URL FastAPI 路径 基础知识 API 参数 使用 我们

FastAPI 基础知识——使用 FastAPI 更快

https://fastapi.tiangolo.com/

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于基于标准 Python 类型提示使用 Python 3.7+ 构建 API。

什么是 API?

API 是的首字母缩写词 应用程序接口 ,这是一个软件中介,允许两个应用程序相互通信。

在 API 的上下文中,接口可以被认为是两个应用程序之间的服务契约。该合约定义了两者如何使用请求和响应相互通信,这些响应消息可以是任何受支持的格式,如 XML、JSON、CSV 等。

想象一下,你和你的伴侣去一家餐馆吃饭,你想下订单。你会怎么做?打电话给服务员并下订单。现在,后端会发生什么?服务员去找厨师并提供订单详情。菜做好了,他就拿给你。这就是 API 通常的工作方式。 API 允许客户端访问后端或服务器的特定资源。

credit : https://www.analyticsvidhya.com/

为什么选择 FastAPI?

我不会告诉你我们为什么喜欢 FastAPI 是因为它是

  • 快速地
  • 快速编码
  • 更少的错误
  • 直觉的
  • 简单的
  • 短的
  • 强大的
  • 基于标准

你已经知道了,这就是你阅读这篇文章的原因对吗??

如何安装它?

Installation via pip

Uvicorn是一个 地理信息系统 ( 异步服务器网关接口 ) 用于 Python 的 Web 服务器实现。 ASGI 是 WSGI 的精神继承者,旨在提供支持异步的 Python Web 服务器、框架和应用程序之间的标准接口。

让我们创建一个基本的 fastAPI

创建一个基本的python脚本,我们来命名它 主要的.py。 在其中,我们将导入 fastAPI 并创建一个函数,该函数在通过端点调用时将返回“Hello World”。这将确保我们已成功安装 fastAPI 并且它已启动并运行 - 通用目标 “你好世界”

现在为了运行服务器,我们需要按照以下语法在终端中运行 uvicorn。

**uvicorn main:app — 重新加载**

主要的 ” → 是模块/脚本名称,即 main.py(我们不必在这里写 .py 扩展名)&“ 应用程序 ” → 是类的实例变量 快速API 我们在上面的代码片段中创建的。

[ http://127.0.0.1:8000/](http://127.0.0.1:8000/) 在浏览器(本地机器)中运行它会获取上述 API 的响应。

FastAPI 提供称为 Swagger UI 的交互式 API 文档。对于运行 Swagger UI 运行 → http://127.0.0.1:8000/docs **** 在浏览器中。您将看到自动交互式 API 文档。

Swagger UI

所以我们的 API 正在返回正确的消息✅,但请稍等一下这里发生了什么⁉️⁉️

了解路径操作

什么是路径?

这个网址的最后一部分 http://127.0.0.1:8000/ 在 8000 之后开始。所以在这里 “/” 也是一条路。它也被称为 端点/路由/api .

什么是操作?

操作指的是 HTTP 方法 .它们有很多,但最常用的 HTTP 方法如下:

**邮政 :** 创建数据。 **得到 :** 检索/读取数据。 **放 :** 更新数据。 **删除 :** 删除数据。

这些操作组合在一起称为 ** CRUD** 操作。

回到我们的应用程序。这 ” ** @app.get('/')”** 装饰师 ** __** 给 快速API 两条信息。 1. 这是一个 ** 得到** 手术。 2.路径参数为 ** “/”。** 一个 ** 装饰师** 总是在函数之上定义的,该函数接受该函数并对其进行处理。这里,函数 ** 根据** 将被调用 快速API 每当它收到对 URL 的请求时 ** “/”** 使用 GET 操作。

现在我们知道了如何创建端点/路径以及如何在任何函数上装饰它,让我们使用 GET 和 POST 方法探索一些示例。

路径参数

路径参数是我们通过路径/端点传递的参数/变量/值。我们需要在里面声明参数 ** {}** 并且需要在函数中将相同的变量声明为参数。因此端点/路径处的变量将作为参数传递给函数。

FastAPI 集成了 Pydantic,因此我们可以使用 Python 类型注释获得类型验证的所有好处。我们只需要定义类型,无需担心幕后的数据验证。

让我们创建一些端点/api 并查看响应以证明上述陈述。

示例 1:

API documentation — Swagger UI

Request URL & Response Body

注意到一些东西 即使我们将 1234 作为路径参数传递,它也被解析为字符串,但当我们在 python 脚本中输入输入时会发生什么?是的,我们在这里面临同样的问题。但在这里,它们是 URL 的一部分,它们是“自然”的字符串。如果我们传递一个浮点数或日期对象会发生什么?好奇的??自己测试一下——学习的唯一方法!!!

现在让我们看看我们处理了类型的第二个示例。

示例 2:

API documentation — Swagger UI

Request URL & Response Body

结果如预期。这是因为当我们声明数据的类型时,首先将它们转换为该类型,然后对其进行验证。但是如果我们传递除了 int 之外的任何东西会发生什么。让我们来看看。

When passed a float

When passed a string

查询参数

您是否曾经在搜索引擎上键入一个地址,只是为了返回一些冗长而复杂的内容,带有等号和问号?

查询参数可以定义为出现在 “?” 在由分隔的 URL 中 “ &” 人物。

问号用于分隔路径和查询参数。

路径和查询参数之间的区别?

  1. 路径参数出现在 “?” 在 URL 中,而 Query 参数紧随其后。
  2. 路径参数标识特定资源/资源,而查询参数用于对资源进行排序/过滤。
  3. 您不能在查询中省略路径参数中的值。

Query parameters example

我们定义了两个端点 “/添加” 这需要两个查询参数 x 和 y,我们已经使用类型注释处理了类型,另一个是 “/乘” 这也是相同的,只是它有一个默认值,我们也可以使用 None 定义一些可选参数,但我们将在 邮政 方法。

当我们用 Python 类型声明参数时,它们会转换为该类型并针对它进行验证。

让我们测试一下 迅雷客户端 .

Query with type validation

“/add”的网址是: http://127.0.0.1:8000/add?x=4&y=6

Query with default values

& “/multiply” 的 URL 是: http://127.0.0.1:8000/乘 , 这里的网址不同,没有“?”或“&”符号,这要归功于在不传递任何查询时使用的默认值,如果我们提供一个它会覆盖默认值。请参阅下面的查询

Overriding default values

请求正文

Antipodal of Response 是客户端需要通过 API 向服务器端发送数据的请求。要发送数据,我们通常使用 POST 方法。再次进行数据验证,我们使用 pydantic 的 基本模型 .使用 ** 基本模型** 我们定义一个类/模型并声明所有必需的数据/字段及其类型。如果某些值已初始化,则不需要其他值,我们可以通过使用使值可选 没有任何。 阅读更多关于 Pydantic 这里 .

Model Class using BaseModel

这里:

  1. user_id 是必需的,并且必须是整数数据类型。
  2. user_age 是一个可选值,如果传递需要是一个整数。
  3. user_name 是必需的,并且必须是字符串数据类型。
  4. user_nick_name 是必需的,并且在传递时需要是一个字符串,如果没有传递任何内容,它的默认值为“Oreo”。

默认值的类型自动设置字段的类型。

JSON Schema

首先,我们将传递所有字段。

在上面的例子中,只有 user_age 是可选的,所以让我们发送一个丢弃可选值的请求。

因此,这几乎是您开始使用 FastAPI 所需了解的所有基础知识。我希望你喜欢这篇文章。在另一个话题上见

感谢阅读继续学习保持真棒

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38674/22522212

标签:URL,FastAPI,路径,基础知识,API,参数,使用,我们
From: https://www.cnblogs.com/amboke/p/16718819.html

相关文章

  • vue 中 watch 的简单使用
    method同级watch:{//监听/**第一种方式:监听对象里面的属性,键路径必须加上引号*/"queryParams.fileName"(newVal,oldVal){console.log(......
  • 如何创建service的时候使用template模板?
    什么模板 模板?什么鬼,其实非常的简单! 就是在创建service的时候,直接引用变量,获取变量的值,然后将这些值变成具体的参数值。 可以设置的参数 --hostname--mount......
  • VS2012使用nuget时提示”基础连接已关闭“基础连接已经关闭: 未能为 SSL/TLS 安全通道
    上手运维着几个老系统,需要使用VS2012,最近使用NUGET的时候,总是提示“基础连接已经关闭:未能为SSL/TLS安全通道建立信任关系”,网上找了好久,基本上都是说修改注册表就可以,......
  • 使用 PNPM 将 React App 中的磁盘空间减少 60%
    使用PNPM将ReactApp中的磁盘空间减少60%在React应用程序中使用PNPM减少磁盘空间的教程。Photoby诺德伍德主题on不飞溅您是否正在处理具有共同依赖项的......
  • 使用样式组件的侧边栏切换
    使用样式组件的侧边栏切换在本文中,我们将探讨如何使用样式组件为Menu/SideBar创建切换功能。一个侧边栏切换是一个按钮,当按下时会生成一个左或右区域滚动容器出......
  • 如何使用下拉菜单制作响应式导航栏菜单
    如何使用下拉菜单制作响应式导航栏菜单作为Web开发人员,必须具备良好的HTML和CSS基础才能设计网页,尤其是登录页面,而登录页面的关键方面之一是导航栏菜单。在本教程中......
  • angular6 使用自定义字体
    angular2+项目打包自定义字体第一步:设置自己的字体下载或者制作自己的字体文件。注意体格式可以为:ttf,woff,eot字体格式在引用时,注意设置css中字体格式的设置@......
  • 使用 Webflow 解锁 Web
    使用Webflow解锁Web我们生活在一个快速发展的网络时代。每天都有越来越多的人上网,根据发布的指标数据报告2022年1月,几乎62.5%世界人口的一半是互联网用户,而且......
  • 如何使用 JavaScript 解决二进制间隙
    如何使用JavaScript解决二进制间隙在编码训练营4个月后,我决定开始做数据结构和算法问题,为我的技术面试做准备。我使用的一些网站是:可编码性黑客等级有什么比......
  • 【ubuntu】14.04系统设置无法正常使用
    方法一:执行命令:sudoapt-getinstallubuntu-desktop方法二:如果系统设置打不开,请重新安装gnome-control-centersudoapt-getinstallgnome-control-center如果设置里只......