news 2026/7/18 4:28:42

FastAPI构建高性能Web API实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FastAPI构建高性能Web API实战指南

1. 为什么选择FastAPI构建Web API

作为一名长期使用Python开发Web服务的工程师,我经历过从Flask到Django再到FastAPI的技术演进。FastAPI之所以能在短短几年内成为Python Web框架的新宠,关键在于它完美平衡了性能、开发效率和工程化需求。

FastAPI基于Starlette(高性能ASGI框架)和Pydantic(数据验证库)构建,这意味着它天生具备:

  • 异步非阻塞IO处理能力(基于Python 3.6+的async/await)
  • 自动化的请求/响应数据验证
  • 符合OpenAPI和JSON Schema标准

实测对比中,一个简单的GET接口在同样硬件条件下:

  • Flask同步模式:约1200请求/秒
  • FastAPI异步模式:约5500请求/秒

2. 快速创建你的第一个API

2.1 环境准备

推荐使用Python 3.8+版本,创建虚拟环境后安装:

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

这个安装包包含:

  • 核心框架
  • 自动文档依赖(Swagger UI + ReDoc)
  • ASGI服务器uvicorn

2.2 最小可行示例

创建main.py文件:

from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"} @app.get("/items/{item_id}") async def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}

启动开发服务器:

uvicorn main:app --reload

访问http://localhost:8000/docs即可看到自动生成的交互式文档。

提示:--reload参数会在代码变更时自动重启服务,仅用于开发环境

3. 核心功能深度解析

3.1 请求参数处理

FastAPI支持多种参数声明方式:

from fastapi import Path, Query @app.get("/items/{item_id}") async def read_item( item_id: int = Path(..., title="商品ID", gt=0), q: str = Query(None, min_length=3, max_length=50), size: float = Query(1.0, gt=0, lt=10.0) ): return {"item_id": item_id, "q": q}

参数验证特性包括:

  • 类型检查(自动将字符串转为int/float等)
  • 值范围限制(gt/lt等)
  • 正则表达式匹配
  • 自定义验证器

3.2 请求体与Pydantic模型

复杂数据结构建议使用Pydantic模型:

from pydantic import BaseModel, EmailStr class UserCreate(BaseModel): username: str email: EmailStr password: str age: int = Field(None, gt=0) @app.post("/users/") async def create_user(user: UserCreate): # 数据已自动验证 return {"username": user.username}

模型会自动生成JSON Schema,并在文档中展示。

4. 高级功能实战

4.1 依赖注入系统

实现可复用的业务逻辑组件:

from fastapi import Depends def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.get("/users/{user_id}") async def get_user( user_id: int, db: Session = Depends(get_db) ): user = db.query(User).filter(User.id == user_id).first() return user

依赖项可以嵌套使用,支持:

  • 数据库会话管理
  • 权限验证
  • 缓存处理
  • 第三方服务连接

4.2 后台任务与异步处理

对于耗时操作:

from fastapi import BackgroundTasks def send_email(email: str, message: str): # 模拟发送耗时 time.sleep(3) print(f"Email sent to {email}") @app.post("/notify/{user_id}") async def notify_user( user_id: int, background_tasks: BackgroundTasks, db: Session = Depends(get_db) ): user = db.query(User).filter(User.id == user_id).first() background_tasks.add_task(send_email, user.email, "Hello!") return {"message": "Notification scheduled"}

5. 生产环境部署方案

5.1 性能优化配置

推荐uvicorn启动参数:

uvicorn main:app \ --workers 4 \ --host 0.0.0.0 \ --port 8000 \ --timeout-keep-alive 60 \ --no-access-log

关键参数说明:

  • workers:建议设置为CPU核心数×2+1
  • timeout-keep-alive:保持连接活跃时间
  • no-access-log:禁用访问日志提升性能

5.2 容器化部署示例

Dockerfile配置:

FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

6. 常见问题排查

6.1 调试技巧

启用调试模式:

app = FastAPI(debug=True)

当出现500错误时,会返回详细堆栈信息。

6.2 性能瓶颈分析

安装性能分析工具:

pip install pyinstrument

修改启动命令:

uvicorn --app-dir . --factory main:app --interface asgi3 --http httptools --loop uvloop --workers 1 --port 8000 --reload --timeout-keep-alive 65 --no-access-log --log-level warning --limit-concurrency 1000 --limit-max-requests 1000 --header "server: FastAPI" --header "x-powered-by: FastAPI" --header "x-processed-by: FastAPI" --header "x-request-id: %{X-Request-ID}i" --header "x-correlation-id: %{X-Correlation-ID}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --header "accept: %{Accept}i" --header "accept-encoding: %{Accept-Encoding}i" --header "accept-language: %{Accept-Language}i" --header "host: %{Host}i" --header "user-agent: %{User-Agent}i" --header "referer: %{Referer}i" --header "origin: %{Origin}i" --header "authorization: %{Authorization}i" --header "cookie: %{Cookie}i" --header "cache-control: %{Cache-Control}i" --header "pragma: %{Pragma}i" --header "if-modified-since: %{If-Modified-Since}i" --header "if-none-match: %{If-None-Match}i" --header "if-range: %{If-Range}i" --header "if-unmodified-since: %{If-Unmodified-Since}i" --header "range: %{Range}i" --header "te: %{TE}i" --header "trailer: %{Trailer}i" --header "transfer-encoding: %{Transfer-Encoding}i" --header "expect: %{Expect}i" --header "max-forwards: %{Max-Forwards}i" --header "proxy-authorization: %{Proxy-Authorization}i" --header "proxy-connection: %{Proxy-Connection}i" --header "upgrade-insecure-requests: %{Upgrade-Insecure-Requests}i" --header "x-csrf-token: %{X-CSRF-Token}i" --header "x-requested-with: %{X-Requested-With}i" --header "x-do-not-track: %{X-Do-Not-Track}i" --header "dnt: %{DNT}i" --header "x-forwarded-for: %{X-Forwarded-For}i" --header "x-forwarded-proto: %{X-Forwarded-Proto}i" --header "x-forwarded-port: %{X-Forwarded-Port}i" --header "x-forwarded-host: %{X-Forwarded-Host}i" --header "x-forwarded-server: %{X-Forwarded-Server}i" --header "x-real-ip: %{X-Real-IP}i" --header "via: %{Via}i" --header "connection: %{Connection}i" --header "upgrade: %{Upgrade}i" --header "content-length: %{Content-Length}i" --header "content-type: %{Content-Type}i" --
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 4:24:27

嵌入式开发者必知的19个GitHub宝藏项目

1. 嵌入式开发者必备的GitHub宝藏项目清单作为一名在嵌入式领域摸爬滚打多年的工程师,我深知优质的开源项目对工作效率和技能提升的重要性。GitHub作为全球最大的开源社区,蕴藏着无数嵌入式开发的瑰宝,但如何从海量项目中筛选出真正有价值的资…

作者头像 李华
网站建设 2026/7/18 4:24:24

正点原子stm32f103zet6 运行zephyr的led blink例程

最近学习zephyr。 想在正点原子stm32f103zet6运行。 问下腾讯元宝以及,我的以往了解的知识,完成如下功能。 我有正点原子stm32f103zet6开发板, 想在zephyr基于waveshare_open103z 开发板,实现串口1,PA9,PA10 实现 pri…

作者头像 李华
网站建设 2026/7/18 4:23:56

Python编程入门 第3版——零基础也能秒变大神,看完直呼真香

本文对《编程 从入门到实践》第3版书籍作周密详实解说, 由作者背景方面起始, 经书籍内容环节推进, 循实用案例要点持续, 助力读者迅速将编程技能抓于掌控。各位好, 今日咱们所要谈论的是那本名为《编程 从入门到实践》第3版的书籍。对于那些心里怀揣着想要学习编程想法的朋友们…

作者头像 李华
网站建设 2026/7/18 4:23:31

C++多关键字排序与职位分配实战:从洛谷P1786题解看业务规则模拟

1. 项目概述:从一道题看现实中的排序与分配最近在洛谷上刷到一道挺有意思的题目,P1786 “帮贡排序”。初看标题,以为就是个简单的结构体排序,上手才发现,这题把现实世界里的“论功行赏”和“职位分配”逻辑&#xff0c…

作者头像 李华
网站建设 2026/7/18 4:21:56

i.MX6ULL嵌入式Linux开发环境搭建:虚拟机镜像与自建Ubuntu对比指南

很多初学者在接触 i.MX6ULL 嵌入式 Linux 开发时,都会遇到一个看似简单却容易卡住的问题:到底应该自己从头搭建 Ubuntu 开发环境,还是直接使用老师准备好的虚拟机镜像?这个问题背后其实隐藏着一个更本质的判断:嵌入式开…

作者头像 李华