在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
FastAPI是一个现代化的高性能网络框架,用于使用Python构建API。 它旨在易于使用和学习,同时提供强大的功能,如自动验证、序列化和自动交互式 API 文档。 此外,它可以与任何模板引擎一起使用,并允许您根据项目需要使用任何默认模板配置。
让我们深入了解详情 FastAPI、其功能以及如何有效使用它。 稍后在本文中,我们还将探讨 IronPDF 一个 PDF 生成 Python 软件包来自 铁软件(Iron Software).
高性能:FastAPI 是最快的 Python 框架之一,由于其网页部分使用 Starlette 和数据部分使用 Pydantic,与 Node.js 和 Go 相当。
易用性:它被设计为直观的,以减少阅读文档所需的时间。 该框架利用标准的Python类型提示进行数据验证和序列化。
自动交互式文档:FastAPI 使用 OpenAPI 和 JSON Schema 自动生成交互式 API 文档,可以通过 /docs 访问。 (Swagger UI) 和 /redoc (ReDoc) 交互式 API 文档升级意味着此文档会自动更新。 替代API文档升级也将反映这一点。
编辑器支持:在VS Code等编辑器中提供卓越的代码补全和类型检查支持,加快开发速度并减少错误。
您可以安装FastAPI和 Uvicorn (ASGI 服务器) 使用 pip:
pip install fastapi
pip install "uvicorn[standard]"
pip install fastapi
pip install "uvicorn[standard]"
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'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}
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}
from fastapi import FastAPI app = FastAPI() app.get("/") def read_root(): Return
If True Then
"Hello": "World"
End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@app.@get("/items/{item_id}") # @with query parameters def read_item(item_id: int, q: str = None): Return
'{
''INSTANT VB TODO TASK: The following line uses invalid syntax:
'' "item_id": item_id, "q": q}
要运行该应用程序,请使用Uvicorn:
uvicorn main:app --reload
uvicorn main:app --reload
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'uvicorn main:app --reload
此命令将启动一个开发服务器,并在代码更改时自动重新加载。 您可以在 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
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'from pydantic import BaseModel class Item(BaseModel): name: str description: str = None price: float tax: float = None
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"}
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"}
404, detail="Item not found"
status_code=404, detail
404, detail="Item not found"
status_code=404, detail
404, detail="Item not found"
status_code=404, detail
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: 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
item Return item app.get("/items/{item_id}") # [optional] str query parameter def read_item(item_id:= Integer): if item_id [not] in items: raise HTTPException(status_code) Return items(item_id) app.put("/items/{item_id}") # [with] path parameters def update_item(item_id: Integer, item: Item): if item_id [not] in items: raise HTTPException(status_code) items(item_id) = item Return item app.delete("/items/{item_id}") def delete_item(item_id: Integer): if item_id [not] in items: raise HTTPException(status_code) del items(item_id) Return
If True Then
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: 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) 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) items[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:= Integer): if item_id [not] in items: raise HTTPException(status_code) Return items(item_id) app.put("/items/{item_id}") # [with] path parameters def update_item(item_id: Integer, item: Item): if item_id [not] in items: raise HTTPException(status_code) items(item_id)
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: from fastapi import FastAPI, HTTPException app = FastAPI() items = {} @app.post("/items/") def create_item(item: Item): item_id = len(items) + 1 items[item_id]
{} app.post("/items/") def create_item(item:= Item): item_id = len(items) + 1 items(item_id)
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: from fastapi import FastAPI, HTTPException app = FastAPI() items = {} @app.post("/items/") def create_item(item: Item): item_id
FastAPI() items = {} app.post("/items/") def create_item(item:= Item): item_id
from fastapi import FastAPI, HTTPException app = FastAPI() items
'INSTANT VB TODO TASK: The following line uses invalid syntax:
' "message": "Item deleted"}
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
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'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
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
#Apply your license key
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: from fastapi import FastAPI from fastapi.responses import FileResponse from ironpdf import * License.LicenseKey = "key" app = FastAPI() @app.get("/") def read_root(): return
"key" app = FastAPI() app.get("/") def read_root(): Return
If True Then
From fastapi import FastAPI From fastapi.responses import FileResponse From ironpdf import * License.LicenseKey = "key" app
"Hello": "IronPDF"
End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@app.@get("/items/{item_id}") # @with query parameters def read_item(item_id: int, q: str = None): Return
'{
' "item_id": item_id, "q": q
'}
#Create a PDF from a HTML string using Python
#Export to a file or Stream
#To view the file in the browser, use "inline" for the media_type
#Create a FileResponse object with the file path, media type and headers
#Return the FileResponse object
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@app.@get("/pdf") async def get_pdf(greet1: str = None,greet2: str = None): renderer = ChromePdfRenderer() 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) pdf.SaveAs("fastapi.pdf") headers = { "Content-Disposition": "inline; filename=sample.pdf" } response = FileResponse("fastapi.pdf", media_type="application/pdf", headers=headers) Return response
此代码片段演示了将IronPDF与FastAPI集成,以根据用户输入动态生成PDF文档并将其作为可下载响应提供。
设置许可证密钥: 应用IronPDF许可证密钥以启用其功能。
FastAPI 初始化: 初始化一个 FastAPI 实例 (`应用`) 处理 HTTP 请求。3. 基本路由处理程序:`read_root()`: 在访问根 URL 时返回一个简单的 JSON 消息,表示“Hello IronPDF” (`/`). read_item()\
: 接受一个 `item_id` 路径参数和一个可选的 `q` 查询参数。 返回包含这些函数参数的 JSON 响应。
PDF 生成路线 (`/pdf`)获取_pdf()`:
/pdf
端点的 GET 请求,并带有可选的查询参数名。 (greet1
和 greet2
).greet1
和 greet2
). 使用 `ChromePdfRenderer()` 从 IronPDF 将 HTML 内容渲染为 PDF (`pdf = renderer.RenderHtmlAsPdf(内容)`).pdf.SaveAs("fastapi.pdf")\
).5. 提供PDF:"application/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"
from ironpdf import *
# Apply your license key
License.LicenseKey = "key"
IRON VB CONVERTER ERROR developers@ironsoftware.com
FastAPI 是一个功能强大且易于使用的框架,用于在Python中构建API。 FastAPI具有高性能、自动文档和高级功能,是初学者和经验丰富的开发者的绝佳选择。 无论您是在构建简单的 API 还是复杂的 Web 应用程序,FastAPI 都提供了您成功所需的工具。
IronPDF 是一个强大的Python库,用于从HTML内容创建、操作和渲染PDF文档。 它提供了将HTML转换为PDF、交互式表单创建、PDF操作等功能。 (合并、拆分)、文本提取。 非常适合轻松生成动态PDF并集成到各种Python应用程序中。