IBM 后端开发(一)
第1章 Python 编程基础
-
Python 条件使用 "if "语句,根据比较和布尔表达式创建的真/假条件执行代码。
-
比较操作需要使用比较运算符等于"="、大于">"、小于"<"。
-
感叹号"!"用于定义变量的不等式。
-
您可以比较整数、字符串和浮点数。
-
Python 分支通过使用条件语句(如 if、elif)来引导程序流程,根据条件或测试执行不同的代码块。
-
您可以使用带有条件的 "if "语句来定义为真时的操作。
-
要根据真假输出执行操作,可以使用带条件的 "else "语句。
-
只有当初始条件为假时,才允许使用 elif 语句进行额外检查。
-
要对布尔值执行各种操作,我们可以使用布尔逻辑运算符。
-
Python 循环是一种控制结构,可以自动执行重复性任务并遍历数据结构(如列表或字典)。
-
range() 函数为 Python 循环生成一个具有指定开始、停止和步长值的数字序列。
-
Python 中的 for 循环遍历一个序列,如列表、元组或字符串,并为序列中的每个项执行代码块。
-
Python 中的 while 循环在指定条件为真时执行一个代码块。
-
Python 函数是可重用的代码块,它们执行特定任务、接受输入参数并经常返回结果,从而增强了代码的模块性和可重用性。
-
您可能写过也可能没写过经常包含在函数中的代码。
-
Python 有一组内置函数,如用于求序列长度的 "len "函数或用于求序列总和的 "sum "函数。
-
sorted "函数创建一个新的排序列表,而 "sort "则对原始列表中的项目进行排序。
-
您也可以在 Python 中创建自己的函数。
-
为了确保清晰和有条理,并便于理解和维护代码,开发人员必须使用用三个引号括起来的文档字符串来记录函数。
-
help 命令将返回为特定函数定义的文档。
-
一个函数可以有多个参数。
-
函数中的 "无返回 "语句表示函数将不返回任何内容。
-
No work "函数不执行任何任务。可以使用 "pass "关键字来满足非空主体的要求。
-
一个函数通常会执行不止一个任务。
-
在 Python 中,变量的作用域决定了在哪里可以访问或修改该变量。全局作用域允许从任何地方访问变量,而局部作用域将其限制在代码块或函数中。
-
在 Python 中,程序员在特定的代码块或函数中定义一个局部变量,它只能在该代码块或函数中被访问或修改。
-
在 Python 中,全局变量是在程序顶层定义的变量,代码的任何部分都可以访问或修改它。
-
Python 中的异常处理是一种机制,用于管理和响应程序执行过程中可能出现的错误和异常,防止它们导致程序崩溃。
-
在 Python 中,您可以使用 "try-except "语句来尝试代码块,并指定在发生错误时要执行的其他操作,从而处理异常。
-
在 Python 中,您可以使用 "try-except-else "语句来尝试代码块,在 "except "代码块中处理异常,并在没有异常发生时执行 "else "代码块中的代码。
-
Python 开发人员使用 "try-except-else-finally "语句来尝试一个代码块,在 "except "代码块中捕获异常,当没有异常发生时执行 "else "代码块中的代码,并确保 "finally "代码块始终运行,而不管异常是否发生。
-
在 Python 中,对象是封装了数据和行为的类的实例,是创建和处理各种数据类型和自定义数据结构的基础。
-
要确定 Python 中对象的类型,可以使用 `type()` 命令。
-
对象方法中的任何改变都可能导致对象类型的改变。
-
Python 中的类是创建对象、定义其属性和方法、实现代码组织和面向对象编程的蓝图。
-
函数 "init "是一种特殊的方法,用于初始化数据属性。
-
我们可以在 Python 中创建类的实例。
-
数据属性由定义对象的数据组成。
-
方法是交互和改变数据属性的函数。
-
方法有一个需要 self 和其他参数的函数。
第2章用 Python 处理数据
-
Python 使用 open() 函数并允许您读写文件,为读取提供了对文件内内容的 Accessibility。对于写,它还允许覆盖它,并指定文件模式(例如,r 表示读,w 表示写,a 表示追加)。
-
要读取文件,Python 会使用 open 函数和r。
-
Python 使用 openwith函数来读取和处理文件属性,即从打开到关闭。
-
在 Python 中,使用open方法可以编辑或覆盖文件。
-
要写入一个文件,Python 使用open与w 函数。
-
在 Python 中,"a "表示程序已追加到文件。
-
在 Python 中,"\n "表示代码应从新行开始。
-
Python 使用各种方法从属性中打印行。
-
-
Pandas 是一个强大的 Python 库,用于数据操作和分析,提供了数据结构和函数来处理数据帧和序列等结构化数据。
-
您可以通过使用 import 命令导入文件 (panda),然后在文件名后跟上。
-
在 Python 中,您可以使用as命令为文件提供一个更短的名称。
-
在 Pandas 中,您使用数据帧 (df) 来指定要读取的文件。
-
数据帧由行和列组成。
-
您可以使用特定 DataFrame 的一列或多列来创建新的 DataFrame。
-
我们可以处理 DataFrames 中的数据,并将结果保存为不同的格式。
-
在 Python 中,您可以使用Unique方法来确定 DataFrames 列中的唯一元素。
-
您可以使用不等式操作符和 df,为 DataFrames 中选定的列分配一个 Boolean 值。
-
将新的 DataFrame 保存为不同的 DataFrame,其中可能包含先前 DataFrame 中的值。
-
-
NumPy 是一个用于数值和矩阵运算的 Python 库,提供多维数组对象和各种数学函数,可高效处理数据。
-
NumPy 是 Pandas 的基础。
-
NumPy 数组或 ND 数组类似于列表,通常大小固定,元素种类相同。
-
-
一维 NumPy 数组是单轴元素的线性序列,就像传统的列表,但针对数值计算和数组操作进行了优化。
-
你可以使用索引访问 NumPy 中的元素。
-
使用属性dtype可以获取数组元素的数据类型。
-
你可以使用nsize和ndim分别获取数组的大小和维度。
-
你可以在 NumPy 中使用索引和切片方法。
-
向量加法是 Python 中广泛使用的操作。
-
用线段或箭头来表示向量加法是很有用的。
-
NumPy 代码的运行速度更快,这对大量数据的处理很有帮助。
-
用负号代替加号,可以执行向量减法。
-
在 Python 中,数组与标量相乘需要将数组中的每个元素与标量值相乘,从而得到一个新数组,其中的每个元素都按标量缩放。
-
Hadamard 积是指两个相同形状的数组按元素相乘,得到一个新数组,其中每个元素都是输入数组中相应元素的乘积。
-
Python 中的点积是两个数组的元素向乘积之和,常用于向量和矩阵运算,求出对应元素相乘求和的标量结果。
-
在使用 NumPy 时,通常会利用 Matplotlib 等库从存储在 NumPy 数组中的数值数据创建图表和 Visualization。
-
-
二维 NumPy 数组是一种具有行和列的网格状结构,适合以矩阵或表格的形式表示数据,用于数值计算。
-
在 NumPy 中,"shape "指的是数组的维数(行列数),表示数组的大小和结构。
-
你可以使用属性 "size "来获取数组的大小。
-
使用矩形属性可以访问数组中的各种元素。
-
在 NumPy 中使用标量对元素进行乘法运算。
-
第3章 API 和数据收集
应用程序接口(简称 API)。
具体而言,我们将讨论什么是API、API库
和REST API,包括请求和响应以及
PyCoinGecko的示例。API 允许两个
软件相互通信。例如,你有你的程序,
你有一些数据,你有其他软件组件。
您可以使用 API 通过输入和输出与其他软件通信。
就像函数一样,你不必知道 API 的工作原理,只需要知道它的输入和输出。
熊猫实际上是一组软件组件,其中许多组件甚至不是用Python编写的。
你有一些数据。你有一组软件组件。
我们使用 pandas API 通过与其他软件组件通信来处理数据。
让我们清理一下图表。当你创建字典,
然后使用 DataFrame 构造函数创建熊猫对象时,用 API 术语来说,这是一个 “实例”。
字典中的数据被传递给熊猫 API。
然后,您可以使用数据框与 API 进行通信。
当你调用方法头时,数据框与
显示数据框前几行的 API 进行通信。当你调用均值方法时 ,API 将计算均值并返回值。
REST API 是另一种流行的 API 类型;它们
允许您通过互联网进行通信,从而利用存储等资源、访问更多数据、
人工智能算法等等。RE 代表代表性,
S 代表州,T 代表转移。
在 REST API 中,你的程序被称为客户端。API 与
您通过互联网调用的网络服务进行通信。有一套关于沟通、
输入或请求以及输出或响应的规则。以下是一些常用术语。
可以将您或您的代码视为客户端。Web 服务被称为资源。
客户端通过端点找到服务。我们将在下一节中对此进行更多介绍。
客户端向资源发送请求,向客户端发送响应。
HTTP 方法是一种通过互联网传输数据的方式。
我们通过发送请求来告诉 REST API 该怎么做。该请求
通常通过 HTTP 消息进行通信。HTTP 消息通常包含一个 JSON 文件。
其中包含我们希望该服务执行什么操作的说明。
此操作通过互联网传输到网络服务。
该服务执行操作。以类似的方式,Web 服务
通过 HTTP 消息返回响应,其中信息通常
通过 JSON 文件返回。这些信息被传回给客户端。
加密货币数据非常适合在API中使用,因为它会不断更新
,对加密货币交易至关重要。我们将为 CoinGecko API 使用 PyCoinGecko Python
客户端/包装器,由 CoinGecko 每分钟更新一次。
我们之所以使用包装器/客户端,是因为它易于使用,因此您可以专注于收集
数据的任务,我们还将介绍用于处理时间序列数据的 pandas 时间序列函数。
使用 PyCoinGecko 收集数据很简单。我们只需要安装
和导入库,然后创建一个客户端对象,最后使用一个函数来请求我们的数据。
在此函数中,我们将获取过去
30天内以美元计算的比特币数据。在这种情况下,我们的响应是一个 JSON,表示为 Python 字典,包含嵌套列表,
包括价格、市值和总交易量,其中包含 UNIX 时间戳和
当时的价格。我们只对价格感兴趣,因此我们将使用密钥价格来选择价格。
为了简单起见,我们可以将嵌套列表转换为 DataFrame,
列的时间戳和价格很难理解列的时间戳。
我们将使用 pandas 函数 to_datetime 将其转换为更具可读性的格式
使用 to_datetime 函数,我们创建可读的时间数据,输入是时间戳
列,时间单位设置为毫秒。我们将输出附加到新列 date 中。
现在我们要创建一个 K 线图。为了获得每日蜡烛图的数据,
我们将按日期分组,以找出每天的最低价格、最高价格
、第一价和最后价格。最后,我们将使用 plotly 来创建
并绘制蜡烛图。
现在,我们可以通过打开 HTML 文件并单击选项卡
左上角的 “信任 HTML” 来查看 K 线图。它应该看起来像这样。
-
Python 中的简单 API 是应用程序编程接口,它提供了与服务、库或数据交互的简单易用的方法,通常只需最少的配置或复杂度。
-
API 可以让两个软件相互对话。
-
在 Python 中使用 API 库需要导入该库,调用其函数或方法来发出 HTTP 请求,并解析响应以访问 API 提供的数据或服务。
-
Pandas API 通过与其他软件组件通信来处理数据。
-
当你创建一个字典,然后使用 DataFrames 构造函数创建一个 Pandas 对象时,就会形成一个 Instance。
-
方法 "head() "将从 DataFrames 的顶部(默认为 5)显示所提及的行数,而方法 "mean() "将计算平均值并返回值。
-
-
Rest API 可让您通过互联网进行通信,利用存储、Accessibility 更多数据、AI 算法等资源。
-
HTTP 方法通过互联网传输数据。
-
HTTP 消息通常包括一个 JSON 文件,其中包含操作指令。
-
包含 JSON 文件的 HTTP 消息作为 Web Services 的响应返回给 Client。
-
处理时间序列数据需要使用 Pandas 时间序列函数。
-
您可以获取日烛台数据,并使用 Plotly 绘制带有烛台图的图表。
-
-
HTTP(超文本传输协议)在客户端(网络浏览器)和 Web Server 之间传输数据,包括网页和资源。
-
HTTP 协议常用于实现各种类型的 REST API。
-
HTTP 响应包括资源类型、资源长度等信息
-
统一资源定位器(URL)是在网络上查找资源最常用的方法。
-
URL 分为三个部分:方案、互联网地址或 Base URL 和路由
-
GET 方法是请求信息的常用方法之一。其他一些方法也可能包含正文。
-
响应方法包含响应的版本和正文。
-
POST 向服务器提交数据,PUT 更新服务器上已有的数据,DELETE 从服务器删除数据。
-
-
Requests 是一个 Python 库,可让您轻松发送 HTTP/1.1 请求
-
您可以使用 GET 方法修改查询结果。
-
您可以用 Query 字符串从一个 URL 获取多个请求,如姓名、IDS 等。
-
-
Python 中的 Web scraping 包括从网站中提取和解析数据,为各种应用程序收集信息,使用的库包括 Beautiful Soup 和 requests。
-
HTML 由被称为标签的 Angular 括弧括起来的蓝色文本元素所包围的文本组成。
-
您可以选择网页上的某个 HTML 元素来检查网页。
-
网页在包含 HTML 元素的同时,还可能包含 CSS 和 JavaScript。
-
每个 HTML 文档就像一个 HTML Tree,其中可能包含字符串和其他标记。
-
每个 HTML 表格都由表格标签组成,其结构包括行、标题、正文等元素。
-
-
还可以使用 Pandas 中的 `read_html` 方法从网页中提取表格数据。
-
Python 中的 Beautiful Soup 是一个用于解析和导航 HTML 和 XML 文档的库,使从网页中提取和操作数据变得更加 Accessibility。
-
要解析文档,只需通过 Beautiful Soup 构造函数传递文档,即可获得一个以嵌套数据结构形式表示文档的 Beautiful Soup 对象。
-
Beautiful soup 将 HTML 表示为一组树状对象,并附有解析 HTML 的方法。
-
Navigable string 就像一个支持 beautiful soup 功能的 Python 字符串。
-
find_all 是一种方法,用于根据标签的名称、标签的 Attribute、字符串的文本或这些内容的某种组合提取内容。
-
find_all 方法会查看标签的后代,并检索所有符合筛选条件的后代。
-
结果是一个像列表一样的 Python 可迭代表。
-
文件格式是指用于存储和表示文件中数据的特定结构和编码规则,例如 .txt 表示纯文本,.csv 表示逗号分隔值。
-
Python 可以处理 CSV、XML、JSON、xlsx 等不同的文件格式
-
文件名的扩展名会让您知道它是什么类型的文件,需要用什么打开。
-
要访问 CSV 文件中的数据,我们可以使用 Pandas 等 Python 库。
-
同样,不同的方法也有助于解析 JSON、XML 和其他文件。
第5章
软件开发人员在创建 API 时遵循多种架构,但最流行
的是表述性状态传输(或 REST)或简单对象访问协议(或 SOAP)。
这些架构将在另一段视频中讨论。
API 之所以有好处,原因有很多,其中包括:
改善应用程序之间的连接。
支持传统的创建、读取、更新、删除(或 CRUD)操作。
适用于 HTTP 动词,包括 PUT、POST、DELETE 和 GET。
基于 HTTP,因此可以自定义。
API 是一个更通用的术语,用于在
系统的任意两个部分之间创建链接的所有形式的应用程序。
Web 应用程序是一种在前端和后端之间进行通信的 API 形式。
为了澄清 Web 应用程序和 API 之间的区别,让我们以
电子商务购物服务为例。
当您通过浏览器访问电子商务购物服务时,浏览器充当
将您连接到 Web 应用程序的 API。
当您选择产品时,Web 应用程序会检查该产品的供货情况,并在可用时
显示其价格。
如果您尝试使用移动设备访问电子商务购物服务,则设备中的
应用程序充当连接到电子商务购物服务的 API。
所有 Web 应用程序的本质是与其他应用程序共享数据;从本质上讲,所有 Web 应用程序都
可能被视为 API。
但是,API 是一个通用术语,包括 “在线” 或基于 Web 的应用程序,以及 “离线”
应用程序。
总而言之,所有 Web 应用程序都是 API,但并非所有 API 都是 Web 应用程序。
在本视频中,您了解到:Web 应用程序是存储在远程服务器上
并通过浏览器通过 Internet 交付的程序。
您无需安装新
软件即可在不同的平台和浏览器上运行 Web 应用程序。
应用程序编程接口(简称 API)是一种软件组件,它使两个未连接的
应用程序能够进行通信。
Web 应用程序是 API,但并非所有 API 都是网络应用程序。
两者在应用程序之间共享数据,但并非所有的 API 都像 Web 应用程序那样需要网络。
单元测试是一种验证代码单元是否按设计运行的方法。
单元是应用程序中较小的可测试部分。
以下是一个单元的示例,它
在 mymodule.py 文件中具有两个函数 square 和 doubler。s@@
quare 函数写成 def square 开圆
括号数字右圆括号冒号返回数星号星号星号 two。
同样,doubler 函数的代码写成 def doubler 左圆括号右
圆括号冒号返回数星号 two。
要开发单元测试,您将使用 unittest 库,
这是一个已安装的 Python 模块,提供了包含测试功能的框架。
让我们简要回顾一下从单元测试到
发布到生产代码库的端到端测试过程。
在代码开发过程中,您将测试每个单元。
该测试分两个阶段进行。
在第一阶段,您将在本地系统上测试该单元。
如果测试失败,您将确定失败的原因并
修复问题,然后再次测试该单元。
单元测试通过后,您需要在服务器环境(
例如持续集成持续交付或 CICD 测试服务器)中测试单元。
如果设备未通过服务器测试,您将收到失败的详细信息。
您需要确定并修复问题。
一旦该单元通过服务器测试,
该单元就会集成到最终代码库中。
------------------------------------
-
应用程序开发生命周期有七个阶段,包括:
-
需求收集:收集应用程序的用户、业务和技术需求
-
分析:分析需求
-
设计:您设计完整的解决方案
-
编码和测试:构建并测试应用程序的不同组件
-
用户和系统测试:用户测试应用程序的可用性,您执行系统集成测试和性能测试
-
生产:该应用程序可供所有最终用户使用
-
维护:升级或修复任何用户或系统问题
-
所有 Web 应用都是 API,但并非所有 API 都是 Web 应用。两者都在应用之间共享数据,但并非所有 API 都像 Web 应用一样需要网络。
-
PEP8 代码可读性指南包括以下内容:
-
四个空格缩进
-
用空行来分隔函数和类
-
运算符周围和逗号后的空格
-
PEP8 编码约定的一致性和可管理性包括:
-
在函数内添加更大的代码块
-
使用小写字母和下划线命名函数和文件
-
使用 CamelCase 命名类
-
用大写字母命名常量,并用下划线分隔单词
-
为了确保您的代码遵循预定义的样式和标准而无需执行代码,您可以使用静态代码分析方法。
-
单元测试是一种验证代码单元是否按设计运行的方法。在与最终代码库集成之前,您必须测试每个单元。
-
要创建包:
-
创建一个文件夹,同包名
-
创建一个空的 __init__.py 文件
-
创建所需的模块
-
在__init__.py文件中,添加代码来引用包中需要的模块
-
您可以通过 Python shell 中的 bash 终端验证该包。
第6章 使用 Flask 部署 Web 应用
可以使用路径装饰器定义路径。
@app .route 装饰器默认为 GET 方法。客户端只能向指定路径发送 GET 请求。
你可以传入第二个方法参数来控制路径响应的 HTTP
方法。例如,看看以下两个
相同的方法。此代码中隐含了 GET 方法。
虽然这段代码明确指定了 GET 方法。
这是另一个例子。“/health” 网址将响应 GET 和
POST 请求。如果请求是 GET,则代码输出 ok 的状态和 GE
T 的方法。如果请求是 POST,则代码输出状态为 ok 和 POST 方法。
这是 GET curl 命令的输出。虽然这是 POST curl
命令的输出。所有对 Flask 的 HTTP 调用都包含
从 Flask 创建的请求对象。请求课程。当客户端从
Flask 服务器请求资源时,该资源由 @app .route 装饰器处理。您可以使用
相同的方法检查和浏览请求对象。
请求对象中提供了以下信息:以
元组、主机、端口形式表示的服务器地址。随请求一起发送的标头。
还有一个网址,即请求请求的资源。
access_route 列出了多次转发的请求的所有 IP 地址。
full_path,表示请求的完整路径,包括任何查询字符串。
如果客户端使用 HTTPS 或 WSS 协议发出请求,则 is_secure 为真。
如果请求包含 JSON 数据,则 is_json 为真。
而且 Cookie 字典包含随请求发送的所有 Cookie。
此外,您还可以从标题中访问以下数据:
Cache-Control:包含有关如何在浏览器中缓存的信息。
接受:告知浏览器客户端可以理解哪种内容类型。
接受编码:表示代码内容。用户代理:标识客户端、应用程序、
操作系统或版本。接受语言:对特定语言
和区域设置的请求。和主机:指定所
请求服务器的主机和端口号。你可以用
自定义请求对象替换请求对象,这通常是可选的,因为 Flask Request 类的属性和
方法已经足够了。现在让我们来看看
客户端发出请求时服务器上打印的一些实际值。在本例中,客户端是
来自终端的 CURL 命令。
请求服务器是 127.0.0.1 或端口 5000 的本地主机。接下来你要打印出一些标题:
主机是 localhost 的完整路径:5000。用户代理是 curl 版本 7.79.1。
并且客户端已请求应用程序/JSON 的内容类型。
让我们来看看请求对象中的更多属性。
请求的网址是 http://localhost:5000。访问路由列表包含单个
值 127.0.0.1。
请求的完整路径是用
单个正斜杠表示的主路径。is_json 为 false,因为我们没有通过 GE
T 请求发送任何数据。is_secure 为假,因为网址是 HTTP 而不是 HTTPS。而且 cookie 字典的长度为
零。有多种方法可以
从请求对象中获取信息。使用 get_data 以字节
形式访问来自 POST 请求的数据。然后,您负责解析这些
数据。您也可以使用 get_JSON ()
方法将发布请求中的数据解析为 JSON。
Flask 还提供了更有针对性的方法来
从请求中获取确切的信息,因此您不必将数据解析为特定
类型。args 会将查询参数作为字典提供给您。JSON 会将数据解析成字典。
文件将为您提供用户上传的文件。表单包含表单
提交中发布的所有值。值会将 args 数据与
表单数据结合在一起。既然你已经知道请求对象是什么
样子以及从请求参数和正文中获取数据的方法,那么让我们来看看
如何从这些数据中提取特定的值。
到目前为止,你所看到的方法的返回类型要么是 MultiDict、immutableMultiDict,要么是 CombinedMultiDict。
所有这些数据结构的行为都像 python 字典,你可以使用索引或
GET 方法来提取值。对于给定的网址,你想提取
“capstone” 和 “rating” 的查询参数。首先,
在方法中导入 Flask 和请求模块。您可以使用
索引提取课程参数的值。然后,
使用 GET 方法提取评级参数的值。如果
参数不存在,GET 方法将返回值 None,而索引方法则返回错误并
以 “400 错误请求” 停止服务器。该消息在浏览器中显示该请求,
其过程为顶点,评分为10。
Flask 将提供响应对象,就像它提供请求对象一样。
您可以使用 response 对象将自定义属性和标头发送回客户端。
一些常见的响应属性包括:status_code 表示
请求的成功或失败。标头提供有关
响应的更多信息。content_type 显示所请求
资源的媒体类型。content_length 是响应
消息正文的大小。content_encoding 表示应用于响应的任何编码,因此客户端知道
如何解码数据。
mime-type 设置响应的媒体类型。并且 ex
pires 包含响应被视为过期的日期或时间。这里有一些关于响应
对象的标准方法。set_cookie 在客户端上设置浏览器 cookie。
delete_cookie 会删除客户端上的 Cookie。
让我们来了解 Flask 是如何
使用不同的方法处理响应对象的:当你从 @route 方法
返回数据时,会自动为你创建一个 status_code 为 200、mime 类型为 HTML 的 Response 对象。jsonify 还会自动创建一个 Response 对象。
你可以使用 make_response 来创建自定义响应。
Flask 提供了一种特殊的重定向方法,用于返回 302 状态码并将
客户端重定向到另一个 URL。最后,Flask 提供了一种中止方法来
返回带有错误条件的响应。在这段视频中,你了解到:
Flask 为每个客户端调用提供了一个请求和一个 Response 对象。
您可以从 Flask 请求中获取其他信息,例如标头。
您可以解析请求对象以获取查询参数、正文和其他参数。
在将响应发送回客户端之前,您可以设置 Response 对象的状态。
如何在 Flask 中调用外部 API 的示例。
最简单的方法是使用 Python 请求库。
您可以将 JSON 从外部 API 返回给您的客户端。
但是,您也可以在将结果发送回给客户之前对其进行处理。
这里有一个例子,
首先,你导入 flask 并请求模块。
此处的代码假设您已经安装了请求库。
接下来你可以定义你的路线。
使用请求库请求 openLibrary API 并搜索作者
Michael Crichton 的信息。
将响应存储在名为 res 的变量中。
然后检查来自 openLibrary API 的响应状态码是否为 200。
如果响应为 200,则将 JSON 返回给客户端。
如果响应恰好是 404,则会发送一条消息:“出了点问题。”
最后,在这个假设的情况下,如果响应是其他任何内容,则返回
状态为 500,并显示一条消息 “服务器错误”。
在开发 RESTful API 时,你可以发送一些资源 ID 作为请求网址的一部分。
例如,你想创建一个按国际
标准书号 (ISBN) 返回图书信息的端点,但
你不想对 ISBN 进行硬编码,而是希望客户端将其作为 URL 的一部分发送
Flask 为此目的提供了动态路由。
让我们来看一个具体的例子:
添加名为 isbn 的变量作为 URL 的动态部分。
然后将此变量传递给 openLibrary API。
然后将结果发送回客户端。
Flask 还允许您设置参数类型。
框架使用此信息来验证传入的请求。
例如,您可以创建航站楼和 SFO 的终端节点来获取
旧金山机场的航站楼数量。
如果用户在 URL 末尾发送字符串,则会触发此路由装饰器。
同样,在前面的示例中,您可以将 ISBN 指定为数字。
以下是 Flask 中参数类型的其他一些示例。
虽然字符串、int 和 float 是简单的参数,但您也可以使用复杂的参数,例如
路径来指示 Web 路径或文件夹路径,或者使用
通用唯一标识符 (UUID) 来表示唯一 ID,例如全局唯一标识符
(GUID)。
以下是 UUID 的示例。
您可以创建一个具有特定 UUID 的端点 “网络”,以获取有关
网络的信息。
你可以编写这段代码,其中
路由需要一个 uuid 类型的变量 uuid,
uuid 作为参数传递给方法,
如果找到 uuid,则返回成功消息,
否则,返回带有相应消息的错误代码。
在这段视频中,你学到了:
你可以解析请求对象以获取查询参数、正文和其他参数。
在将响应发送回客户端之前,您可以设置 Response 对象的状态。
您可以使用动态路由来创建 RESTful 端点。
Flask 是一个微型框架,用于使用
Python 快速轻松地创建 Web 应用程序,Flask 支持 CRUD。
这不过是
通过发出 “发布”、“上传”、“获取”、“更新” 和 “删除” 请求来创建、读取、更新和删除请求。
以下是 Flask 应用程序的基本结构。
注意 Flask 包装的徽标。
让我们来看看如何使用 Flask 进行 CRUD 操作。
Post 和 Put 请求用于创建对象或数据,
例如,您可以使用 Post 和 Put 请求来创建用户。
两者的区别在于,Post 会在每个
请求上创建对象或数据,而 Put 仅在第一个请求中创建对象或数据,并在
连续请求中继续更新对象或数据。
在大多数 Web 应用程序中,您将看到 Post 用于
创建对象或数据。
您可以使用 Get 请求从服务器读取数据,
可以使用 Update 请求更新现有数据或对象,
也可以使用 Delete 请求删除现有数据或对象。
请注意,大多数 Web 应用程序倾向于使用 Post 来创建
、更新和删除对象和数据,而 Get 用于读取,
另一段视频详细解释了 Post、Put 和 Get 请求。
接下来,让我们来看看如何使用 Flask 创建 Web 应用程序。
第一步是使用 Pip(Python 的
标准软件包管理器)安装 Flask 软件包。
像所有其他软件包一样,你可以使用 Pip Install Flask 命令,
它将获得最新版本的 Flask。
Flask 软件包已安装完毕,您就可以创建 Web 应用程序了。
接下来,导入 Flask 包,实例化 Flask 类,
创建 Web 应用程序,然后运行该应用程序。
为了演示起见,让我们看一下
返回 Hello World 字符串作为对 Get 请求的响应的 Web 应用程序。
第一步,安装 Flask。
第二步,从 Flask 包中导入 Flask 模块,为
此,请从 Flask 导入 Flask 中键入 Flask。
第三步,将 Flask 类的对象创建为 Web 应用程序,
名为 “我的第一个 Web 应用程序”,并将其存储为应用程序。
例如,app = Flask(“我的第一个应用程序”),
为了清楚起见,大多数应用程序都使用引用名称应用程序。
但是,app 只是一个引用名称,你可以使用任何其他名称。
第四步,定义
访问此路由时将调用的根和方法。
例如,输入 @app .route ('/'),
请注意,在此示例中,未指定 Get 和 Post。
如果未指定请求,则默认情况下会请求 Get。
因此,在示例
中,终端节点现在可以向根端提供 Get 请求。
第五步,hello 是方法,写成 def hello ():,
当系统访问上
一步中定义的 API 端点时,将调用 hello 方法。
执行此操作的代码是 app.run(调试)。
它不带任何参数并返回字符串 Hello World。
在代码中,这被写成返回 “Hello World!”。
第六步,添加一个条件,即
只有在 _ _name _
属性设置为 _ _ main _ 时,Web 应用程序才应运行,
默认情况下 _ _ name _ 设置为 _ _ main
_,除非明确更改。
你可以像任何其他 Python 应用程序一样保存和运行它。
键入 app.run (debug=True)。
要在开发环境中启动服务器,需要将
代码保存在 Python 文件中,然后像任何其他 Python 应用程序一样运行它。
当 Web 应用程序服务器启动时,它会为您提供 IP 地址和
可以访问应用程序的端口。
要检查端点,你可以打开浏览器并
连接到你看到的这个端点。
在服务器输出中,端口 5000 处为 127.0.0.1,可以
看到 Web 服务器应用程序返回的字符串 Hello World。
模板不过是
预先创建的 HTML 页面,由 Web 应用程序提供。
它们既可以是静态的,也可以是动态的,默认情况下,Flask 应用程序
在根目录下名为 templates 的目录中查找模板。
如果模板需要使用
存储在根目录中名为 static 的文件夹中的图像、样式表或 JavaScript 文件,
则静态页面将按原样呈现。
动态页面通常包含针对
每个请求动态填充的信息,这些页面通常基于作为参数传递的值。
参数可以通过 URL 传递,也可以
作为请求参数传递。
让我们来看一个示例 Flask 应用程序。
首先要导入 Flask 来创建 Web 应用程序请求、
处理传入的请求和 render_template。要@@
呈现静态和动态 HTML 页面,请
从 flask 导入 Flask、render_templ
ate、request 中键入,然后实例化 Flask 并设置静态文件夹。
例如,app = Flask(“我的
第一个应用程序”)。
默认的文件夹名称是静态的,但
只要您明确设置,您就可以将静态内容放在具有不同名称的目录中。
请注意,此 Web 应用程序中有三个端点。
第一个是 /sample,它将呈现一个静态 HTML 页面,
此 HTML 中的图像来自静态目录。
完成此操作的代码是
app.route ('/sample'),
在第二行中键入
def getSampleHTML ():。
请注意,getSampleHTML 之间没有空格,在
第三行中键入,
返回 render_template ('sample.html')。
下一个是 /user/username,其中你在
尖括号内看到的用户名是参数,代码写成
@app .route ('/user/ <username>',methods= [' GET '])。
如果你看到该方法已被明确
设置为 get,这只是为了展示
如何设置请求的类型。
如果未指定任何内容,则将其视为 Get 请求。
页面是使用我们在网址中传递的参数呈现的。
最后一个是 /user/username,其中用户名作为请求参数传递。
页面使用作为请求传递的参数呈现。
在本视频中,您将了解到 Flask 是一个用于
创建 Web 应用程序的微框架,并且支持 CRUD。使用
Pip 安装 Flask 包使用 Flask 创建 Web 应用程序、
导入 Flask、实例化 Flask、运行应用程序,
你可以使用 Flask 渲染静态和动态模板。
----------------
-
Python 库就像工具包。每个库都有特定的工具来简化和加快某些编程任务。框架是应用程序开发的预定义结构。框架使您能够构建完整的应用程序,而库则有助于实现特定功能。
-
Flask 是一个微框架,附带的依赖项最少。为了构建网站,Flask 具有调试服务器、路由、模板和错误处理等功能。Flask 可以作为 Python 包安装。与 Flask 相比,Django 是一个全栈框架。您可以通过实例化 Flask 类来创建服务器。
-
Flask 为每个客户端调用提供了一个请求和一个响应对象。您可以从 Flask 请求中获取更多信息,例如标头。您可以解析请求对象以获取查询参数、正文和其他参数。您甚至可以在将响应发送回客户端之前在响应对象上设置状态。
-
您可以使用动态路由来创建 RESTful 端点。
-
HTTP 状态代码有多种类型,分别表示成功、用户错误或服务器错误。Flask 会在响应中隐式返回成功代码 200。您也可以显式提供状态代码。Flask 还提供应用程序级错误处理程序。
-
Flask 是一个用于创建 Web 应用程序的微框架,支持 CRUD。
-
使用 pip 安装 Flask 包。
-
要使用 Flask 创建 Web 应用程序:
-
导入 Flask
-
实例化 Flask
-
运行应用
-
-
您可以使用 Flask 渲染静态和动态模板。