在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
FastAPI 是一个现代的、高性能的 Web 框架,用于使用 Python 构建 API。 它旨在易于使用和学习,同时提供强大的功能,如自动验证、序列化和自动交互式 API 文档。 此外,它可以与任何模板引擎一起使用,并允许您根据项目需要使用任何默认模板配置。
让我们深入了解FastAPI的细节,其功能以及如何有效地使用它。 在本文后面,我们还将研究IronPDF,这是一款来自Iron Software的PDF生成Python包。
高性能:FastAPI 是最快的 Python 框架之一,与 Node.js 和 Go 可媲美,这要归功于它在网络部分使用 Starlette 和在数据部分使用 Pydantic。
易用性:它被设计得直观,并减少阅读文档所需的时间。 该框架利用标准的Python类型提示进行数据验证和序列化。
自动交互式文档:FastAPI 使用 OpenAPI 和 JSON Schema 自动生成交互式 API 文档,可通过 /docs (Swagger UI) 和 /redoc (ReDoc) 访问,交互式 API 文档升级意味着此文档会自动更新。 替代API文档升级也将反映这一点。
编辑器支持:在VS Code等编辑器中提供优秀的代码补全和类型检查支持,加快开发速度并减少错误。
您可以使用 pip 安装 FastAPI 和 Uvicorn(一个 ASGI 服务器):
pip install fastapi
pip install "uvicorn[standard]"
pip install fastapi
pip install "uvicorn[standard]"
以下是一个简单的示例,帮助您入门 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
要运行该应用程序,请使用Uvicorn:
uvicorn main:app --reload
py
此命令将启动一个开发服务器,并在代码更改时自动重新加载。 您可以通过访问http://127.0.0.1:8000/docs
来获取交互式API文档。
FastAPI 支持多种高级功能,使其适合复杂的应用程序:
依赖注入:FastAPI 提供了一个强大的依赖注入系统,允许您以干净和高效的方式管理依赖项。
后台任务:您可以定义后台任务在返回响应后运行,这对于发送电子邮件或处理数据等任务非常有用。
WebSockets:FastAPI 支持 WebSockets,实现客户端和服务器之间的实时通信。
安全性:FastAPI 包含处理安全的工具,包括 OAuth2、JWT 令牌等。
让我们构建一个简单的CRUD(创建、读取、更新、删除)API来管理项目。
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
py
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
IronPDF 是一个强大的 Python 库,专为从 HTML、CSS、图像和 JavaScript 创建、编辑和签署 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 和字体等资产。
pip install fastapi
pip install ironPDF
pip install fastapi
pip install ironPDF
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
此代码片段演示了将IronPDF与FastAPI集成,以根据用户输入动态生成PDF文档并将其作为可下载响应提供。
设置许可证密钥:应用IronPDF许可证密钥以启用其功能。
FastAPI 初始化:初始化一个 FastAPI 实例(app
)以处理 HTTP 请求。3. 基本路由处理程序:read_root()
:访问根 URL(/
)时响应一个简单的 JSON 消息,表示“Hello IronPDF”。 `read_item()`:接受一个`item_id`路径参数和一个可选的`q`查询参数。 返回包含这些函数参数的 JSON 响应。
PDF 生成路径 (`/pdf`):`get_pdf()`:
/pdf
端点的GET请求,带有可选的查询参数名为(greet1
和greet2
)。pdf.SaveAs("fastapi.pdf")
)。5. 提供 PDF 服务:以下代码片段展示了如何将IronPDF无缝集成到FastAPI中,以根据用户输入动态生成和提供PDF文档。 它展示了将 HTML 内容转换为 PDF 的能力,适合需要通过 HTTP 动态生成和传输文档的应用程序。
以下显示了从API生成的Swagger输出
IronPDF 在 Python 的许可证密钥上运行。 IronPDF for Python 提供免费试用许可证密钥,允许用户在购买前查看功能。
在使用IronPDF软件包之前,将许可证密钥放在脚本的开头:
from ironpdf import *
# Apply your license key
License.LicenseKey = "key"
py
FastAPI 是一个功能强大且易于使用的框架,用于在 Python 中构建 API。 FastAPI具有高性能、自动文档和高级功能,是初学者和经验丰富的开发者的绝佳选择。 无论您是在构建简单的 API 还是复杂的 Web 应用程序,FastAPI 都提供了您成功所需的工具。
IronPDF 是一个强大的 Python 库,用于从 HTML 内容创建、操作和渲染 PDF 文档。 它提供了HTML转PDF转换、交互式表单创建、PDF操作(合并、拆分)以及文本提取等功能。 非常适合轻松生成动态PDF并集成到各种Python应用程序中。