产品比较

FastAPI Python(它如何为开发者工作)

介绍

FastAPI 是一个现代的、高性能的 Web 框架,用于使用 Python 构建 API。 它旨在易于使用和学习,同时提供强大的功能,如自动验证、序列化和自动交互式 API 文档。 此外,它可以与任何模板引擎一起使用,并允许您根据项目需要使用任何默认模板配置。

让我们深入了解FastAPI的细节,其功能以及如何有效地使用它。 在本文后面,我们还将研究IronPDF,这是一款来自Iron Software的PDF生成Python包。

FastAPI的主要功能

  1. 高性能:FastAPI 是最快的 Python 框架之一,与 Node.js 和 Go 可媲美,这要归功于它在网络部分使用 Starlette 和在数据部分使用 Pydantic。

  2. 易用性:它被设计得直观,并减少阅读文档所需的时间。 该框架利用标准的Python类型提示进行数据验证和序列化。

  3. 自动交互式文档:FastAPI 使用 OpenAPI 和 JSON Schema 自动生成交互式 API 文档,可通过 /docs (Swagger UI) 和 /redoc (ReDoc) 访问,交互式 API 文档升级意味着此文档会自动更新。 替代API文档升级也将反映这一点。

  4. 编辑器支持:在VS Code等编辑器中提供优秀的代码补全和类型检查支持,加快开发速度并减少错误。

  5. 基于标准:它基于(并且完全兼容)API的开放标准:OpenAPI和JSON Schema。

安装

您可以使用 pip 安装 FastAPI 和 Uvicorn(一个 ASGI 服务器):

pip install fastapi
pip install "uvicorn[standard]"
pip install fastapi
pip install "uvicorn[standard]"
SHELL

创建您的第一个 FastAPI 应用程序

以下是一个简单的示例,帮助您入门 FastAPI,并通过用户界面公开 Python 数据:

from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "World"}
@app.get("/items/{item_id}") # with query parameters
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
py
PYTHON

要运行该应用程序,请使用Uvicorn:

uvicorn main:app --reload
py
PYTHON

此命令将启动一个开发服务器,并在代码更改时自动重新加载。 您可以通过访问http://127.0.0.1:8000/docs来获取交互式API文档。

高级功能

FastAPI 支持多种高级功能,使其适合复杂的应用程序:

  1. 依赖注入:FastAPI 提供了一个强大的依赖注入系统,允许您以干净和高效的方式管理依赖项。

  2. 后台任务:您可以定义后台任务在返回响应后运行,这对于发送电子邮件或处理数据等任务非常有用。

  3. WebSockets:FastAPI 支持 WebSockets,实现客户端和服务器之间的实时通信。

  4. 安全性:FastAPI 包含处理安全的工具,包括 OAuth2、JWT 令牌等。

  5. 数据库集成:FastAPI可以使用SQLAlchemy或Tortoise-ORM等库轻松集成数据库。

示例:构建CRUD API

让我们构建一个简单的CRUD(创建、读取、更新、删除)API来管理项目。

  1. 定义数据模型
from pydantic import BaseModel
class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None
py
PYTHON
  1. 创建 FastAPI 应用程序
from fastapi import FastAPI, HTTPException
app = FastAPI()
items = {}
@app.post("/items/")
def create_item(item: Item):
    item_id = len(items) + 1
    items[item_id] = item
    return item
@app.get("/items/{item_id}") # optional str query parameter
def read_item(item_id: int):
    if item_id not in items:
        raise HTTPException(status_code=404, detail="Item not found")
    return items[item_id]
@app.put("/items/{item_id}") # with path parameters
def update_item(item_id: int, item: Item):
    if item_id not in items:
        raise HTTPException(status_code=404, detail="Item not found")
    items[item_id] = item
    return item
@app.delete("/items/{item_id}")
def delete_item(item_id: int):
    if item_id not in items:
        raise HTTPException(status_code=404, detail="Item not found")
    del items[item_id]
    return {"message": "Item deleted"}
py
PYTHON

介绍IronPDF

FastAPI Python(开发者如何使用):图 1

IronPDF 是一个强大的 Python 库,专为从 HTML、CSS、图像和 JavaScript 创建、编辑和签署 PDF 而设计。 它提供商业级性能,同时占用较少的内存。 关键功能包括:

HTML 转换为 PDF

将HTML文件、HTML字符串和网址转换为PDF。 例如,使用Chrome PDF渲染器将网页渲染为PDF。

跨平台支持

兼容多种 .NET 平台,包括 .NET Core、.NET Standard 和 .NET Framework。 支持 Windows、Linux 和 macOS。

编辑和签署

设置属性,使用密码和权限添加安全性,并对您的PDF应用数字签名。

页面模板和设置

自定义PDF的页眉、页脚、页码以及可调节的边距。 支持响应式布局和自定义纸张尺寸。

标准合规性

符合PDF标准,如PDF/A和PDF/UA。 支持 UTF-8 字符编码,并处理图像、CSS 和字体等资产。

使用IronPDF和FastAPI生成PDF文档

pip install fastapi
pip install ironPDF
pip install fastapi
pip install ironPDF
SHELL
from fastapi import FastAPI
from fastapi.responses import FileResponse
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "IronPDF"}
@app.get("/items/{item_id}") # with query parameters
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
@app.get("/pdf")
async def get_pdf(greet1: str = None,greet2: str = None):
    renderer = ChromePdfRenderer()
# Create a PDF from a HTML string using Python
    content = "<h1>Document Generated using IronPDF with fastapi GET</h1>"
    content += "<p> Demonstrate PDF generation using User Inputs"+"</p>"
    content += "<p>"+f"Greetings from: {greet1}"+"</p>"
    content += "<p>"+f"And Greetings from: {greet2}"+"</p>"
    pdf = renderer.RenderHtmlAsPdf(content)
    # Export to a file or Stream
    pdf.SaveAs("fastapi.pdf") 
    # To view the file in the browser, use "inline" for the media_type
    headers = {
        "Content-Disposition": "inline; filename=sample.pdf"
    }  
    # Create a FileResponse object with the file path, media type and headers
    response = FileResponse("fastapi.pdf", media_type="application/pdf", headers=headers)
    # Return the FileResponse object
    return response
py
PYTHON

代码解释

此代码片段演示了将IronPDF与FastAPI集成,以根据用户输入动态生成PDF文档并将其作为可下载响应提供。

  1. 设置许可证密钥:应用IronPDF许可证密钥以启用其功能。

  2. FastAPI 初始化:初始化一个 FastAPI 实例(app)以处理 HTTP 请求。3. 基本路由处理程序:read_root():访问根 URL(/)时响应一个简单的 JSON 消息,表示“Hello IronPDF”。 `read_item()`:接受一个`item_id`路径参数和一个可选的`q`查询参数。 返回包含这些函数参数的 JSON 响应。

  3. PDF 生成路径 (`/pdf`):`get_pdf()`

    • 这个异步函数处理对/pdf端点的GET请求,带有可选的查询参数名为(greet1greet2)。
    • 构建一个包含以下内容的HTML字符串(`content`): 一个指示文档来源和目的的标题。 展示使用用户输入(`greet1` 和 `greet2`)生成 PDF 的一段文字。 使用 `ChromePdfRenderer()` 从 IronPDF 将 HTML 内容渲染到 PDF 中 (`pdf = renderer.RenderHtmlAsPdf(content)`)。
    • 将生成的 PDF 保存为 "fastapi.pdf" (pdf.SaveAs("fastapi.pdf"))。5. 提供 PDF 服务:
    • 配置响应头,指定PDF应在浏览器中内联查看(`"Content-Disposition": "inline; filename=sample.pdf"`)。
    • 创建一个`FileResponse`对象,指向生成的 PDF 文件,并具有适当的媒体类型(`"application/pdf"`)。
    • 返回`FileResponse`对象,当访问`/pdf`端点时触发PDF文档的下载。

    以下代码片段展示了如何将IronPDF无缝集成到FastAPI中,以根据用户输入动态生成和提供PDF文档。 它展示了将 HTML 内容转换为 PDF 的能力,适合需要通过 HTTP 动态生成和传输文档的应用程序。

输出

以下显示了从API生成的Swagger输出

FastAPI Python(对开发者的运作方式):图 2

PDF

FastAPI Python(它如何为开发人员工作):图3

IronPDF 许可证

IronPDF 在 Python 的许可证密钥上运行。 IronPDF for Python 提供免费试用许可证密钥,允许用户在购买前查看功能。

在使用IronPDF软件包之前,将许可证密钥放在脚本的开头:

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
py
PYTHON

结论

FastAPI 是一个功能强大且易于使用的框架,用于在 Python 中构建 API。 FastAPI具有高性能、自动文档和高级功能,是初学者和经验丰富的开发者的绝佳选择。 无论您是在构建简单的 API 还是复杂的 Web 应用程序,FastAPI 都提供了您成功所需的工具。

IronPDF 是一个强大的 Python 库,用于从 HTML 内容创建、操作和渲染 PDF 文档。 它提供了HTML转PDF转换、交互式表单创建、PDF操作(合并、拆分)以及文本提取等功能。 非常适合轻松生成动态PDF并集成到各种Python应用程序中。

查克尼特·宾
软件工程师
Chaknith 负责 IronXL 和 IronBarcode 的工作。他在 C# 和 .NET 方面拥有深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的洞察力,有助于提升产品、文档和整体体验。
< 前一页
Python PDF 库比较(免费和付费工具)
下一步 >
IronPDF for Python 与 PDFium Python 之间的比较

准备开始了吗? 版本: 2025.5 刚刚发布

查看许可证 >