Python Flask 构建REST API 简介

server/2025/3/13 20:25:33/

Python Flask 构建REST API

  • Python Flask 构建REST API 简介
    • 将 Flask 用于 REST API
      • 资源
      • API 端点
      • 路由
      • 参数解析(Argument parsing)

Python Flask 构建REST API 简介

REST 或 ReST 是 Representational State Transfer(表征状态传输)的首字母缩写,是客户端机器请求远程机器上存在的资源信息的一种架构。API 是应用编程接口(Application Programming Interface)的缩写,是一套与运行在不同机器上的应用软件进行交互的规则和协议。不同软件实体之间的交互并非新要求。在过去的几十年中,已经提出和发明了许多技术,以实现软件级交互的无缝和便捷。其中值得注意的技术包括远程过程调用(RPC)、远程方法调用(RMI)、CORBA 和 SOAP 网络服务。这些技术都有局限性,比如与某种编程语言绑定(如 RMI),或与专有传输机制绑定,或仅使用某种类型的数据格式。RESTful API(即通常所说的 REST API)几乎完全消除了这些限制。

HTTP 协议的灵活性和简单性使其成为 REST API 的传输机制的有利候选。使用 HTTP 的另一个好处是,它允许使用多种数据格式(如文本、XML 和 JSON)进行数据交换,而不会受限于一种格式,如 XML 是基于 SOAP 的 API 的唯一格式。REST API 与任何一种特定语言无关,这使它成为构建网络交互 API 的实际选择。下图展示了从 REST 客户端到使用 HTTP 的 REST 服务器的 REST API 调用的架构视图:

flowchart LRA[REST 客户端(移动应用程序、网页应用程序、网页浏览器)] -->| HTTP 请求| B[REST 服务器]B -->|HTTP 回应(XML、JSON、HTML 等等)| A

REST API 依赖于 HTTP 请求,并使用其本地方法,如 GET、PUT、POST 和 DELETE。从应用程序接口设计的角度来看,HTTP 方法的使用简化了客户端和服务器端软件的实施。开发 REST 应用程序接口时要牢记 CRUD 操作概念。CRUD 代表创建(Create)、读取(Read)、更新(Update)和删除(Delete)。这就是 HTTP 方法与 CRUD 操作一一对应的地方,例如,GET 表示 ReadPOST 表示 CreatePUT 表示 UpdateDELETE 表示 Delete 操作。

在使用 HTTP 方法构建 REST API 时,我们必须根据方法的幂等性能力谨慎选择正确的方法。在数学中,如果一个操作即使重复多次也能得到相同的结果,那么这个操作就被认为是幂等的。从其余 API 的设计角度来看,POST 方法不具有幂等性,这意味着我们必须确保 API 客户端不会为同一组数据多次发起 POST 请求。GETPUTDELETE 方法是幂等的,不过如果我们第二次尝试删除相同的资源,很可能会得到 404 错误代码。不过,从等价性的角度来看,这种行为是可以接受的。

将 Flask 用于 REST API

可以使用不同的库和框架构建 Python REST API。构建 REST API 的最流行框架是 Django、Flask(使用 Flask-RESTful 扩展)和 FastAPI。这些框架各有优缺点。如果网络应用程序也使用 Django 构建,那么 Django 是构建 REST API 的合适选择。不过,如果只使用 Django 开发应用程序接口,那就有点矫枉过正了。Flask-RESTful 扩展可与 Flask 网络应用程序无缝协作。Django 和 Flask 都拥有强大的社区支持,这有时是选择库或框架时的一个重要因素。FastAPI 被认为是性能最好的,如果目标只是为应用程序构建 REST API,那么它是一个不错的选择。但是,FastAPI 的社区支持与 Django 和 Flask 的支持水平不同。

我们选择了用于 REST API 开发的 Flask RESTful 扩展,以继续我们在网页应用程序开发方面的讨论。请注意,我们只需使用 Flask 就能构建一个简单的API,在本节中,我们将重点使用 REST 架构风格来构建 API。这意味着我们将使用 HTTP 方法对资源执行操作,该资源将由 Python 对象表示。

Flask-RESTful 支持的独特之处在于,它提供了一种方便的方法来 设置响应代码和响应头作为返回语句的一部分。

要使用 Flask 和 Flask-RESTful 扩展,我们需要安装 Flask-RESTful 扩展。我们可以使用以下 pip 命令将其安装到虚拟环境中:

pip install Flask-RESTful

在讨论如何实现 REST API 之前,最好先熟悉一下与 API 相关的一些术语和概念。一些与 API 相关的术语和概念。

资源

资源是 REST 应用程序接口的关键元素,而 Flask-RESTful 扩展库为其提供了支持。资源对象是通过从基本资源类(Resource 类)(可从 Flask-RESTful 扩展库中获取)扩展我们的类来定义的。基础资源类(Resource 类)提供了几个神奇的函数来帮助 API 开发,并自动将 HTTP 方法与资源对象中定义的 Python 方法关联起来。

API 端点

API 端点是客户端软件与服务器软件之间建立通信的入口点。简单来说,API 端点是服务或服务器 URL 的替代术语,程序在该服务或 URL 上监听 API 请求。通过 Flask-RESTful 扩展,我们可以将某个 URL(或多个 URL)与资源对象关联起来,从而定义 API 端点。在 Flask 实现中,我们通过从基本资源类(Resource 类)扩展来实现资源对象。

路由

应用程序接口路由的概念与 Flask 中的网络应用程序路由相似,唯一不同的是,在应用程序接口中,我们需要将资源对象(Resource Object)映射到一个或多个端点 URL 上。

参数解析(Argument parsing)

使用查询字符串或 HTML 表单编码数据可以解析 API 的请求参数。不过,这种方法并不可取,因为查询字符串或 HTML 表单都不是为了与 API 配合使用而设计的。推荐的方法是从 HTTP 请求中直接提取参数。为便于实现这一目的,Flask-RESTful 扩展提供了一个特殊的类 reqparse。这个 reqparse 类类似于 argparse,后者是解析命令行参数的常用选择。

<完>


http://www.ppmy.cn/server/174710.html

相关文章

IDEA2024又一坑:连接Docker服务连不上,提示:Cannot run program “docker“: CreateProcess error=2

为新电脑安装了IDEA2024版&#xff0c;因为局域网中安装有Docker,所以这台电脑上没有安装&#xff0c;当运行时发现死活连不上Docker报&#xff1a;Cannot run program “docker“: CreateProcess error2 分析&#xff1a; Docker服务有问题 其它电脑都能连&#xff0c;排除 网…

使用 Docker 部署 RabbitMQ 并实现数据持久化

非常好&#xff01;以下是一份完整的 Docker 部署 RabbitMQ 的博客文档&#xff0c;包含从安装到问题排查的详细步骤。你可以直接将其发布到博客中。 使用 Docker 部署 RabbitMQ 并实现数据持久化 RabbitMQ 是一个开源的消息队列系统&#xff0c;广泛应用于分布式系统中。使用…

go语言中立即调用的匿名函数

先看代码 type CachedProductQuery struct {productQuery ProductQuerycacheClient *redis.Clientprefix string }func (c CachedProductQuery) GetById(productId int) (product Product, err error) {cachedKey : fmt.Sprintf("%s_%s_%d", c.prefix, "…

集合知识点

1.Collection接口 1.1List接口 1.1.1 ArrayList 常用方法 Collection List ArrayList 常用方法&#xff1a; add(E e) 添加元素 添加在末尾 add(int index,E e) 在指定位置添加元素 clear() 从列表中删除所有元素。 contains(Object o) 如果此列表包含指定的元素&#xff0…

【愚公系列】《Python网络爬虫从入门到精通》045-Charles的SSL证书的安装

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…

Docker搭建Redis哨兵模式【一主两从三哨兵】

Docker搭建Redis哨兵模式 系统: CentOS 7 Dockder 版本: VMware虚拟机 网络适配器 网络连接 桥接模式:直接连接物理网络查看IP命令 ip addr一、哨兵模式概述 1. 官方文档与关联博客 官方文档:https://redis.io/docs/latest/operate/oss_and_stack/management/sentinel关联博…

【透视国家的三维棱镜:技术、制度与文化的解构与重构】

透视国家的三维棱镜&#xff1a;技术、制度与文化的解构与重构 一、技术层&#xff1a;文明的物质显影剂 技术作为生存密码 青铜器冶炼技术将部落联盟升级为商周王朝&#xff0c;蒸汽机将农耕文明扭转为工业文明&#xff0c;半导体技术正在重塑21世纪权力版图。技术是文明存续的…

高阶哈希算法

SHA-256简介 SHA-256 是 **SHA-2&#xff08;Secure Hash Algorithm 2&#xff09;**家族中的一种哈希算法&#xff0c;由美国国家安全局设计&#xff0c;并于 2001 年发布。它能够将任意长度的数据映射为一个固定长度256 位&#xff0c;即 32 字节的哈希值&#xff0c;通常以…