FastAPI入门:如何在GitHub上找到并使用它 – wiki大全


FastAPI入门:如何在GitHub上找到并使用它

引言

在当今快速发展的Web开发领域,选择一个高效、易用且性能卓越的框架至关重要。Python生态系统中有许多优秀的Web框架,而FastAPI凭借其出色的性能、现代化的设计理念以及对类型提示的深度支持,迅速成为开发者的宠儿。FastAPI是一个用于构建API的现代、快速(高性能)Web框架,基于标准的Python类型提示,灵感来源于Starlette和Pydantic。它不仅速度快,而且具有自动交互式API文档、数据验证和序列化等开箱即用的特性,极大地提高了开发效率。

本文将引导您如何在GitHub上找到FastAPI的官方仓库,并详细介绍如何从零开始,在您的本地环境中安装、配置并使用FastAPI构建一个简单的API应用。

第一部分:在GitHub上寻找FastAPI

GitHub是全球最大的代码托管平台,也是开源项目的孵化器。找到FastAPI的官方仓库是了解项目、获取最新代码和参与社区的第一步。

  1. 打开GitHub网站
    在您的浏览器中访问 https://github.com/

  2. 使用搜索功能
    在GitHub页面顶部的搜索栏中输入“FastAPI”并按回车键。

  3. 识别官方仓库
    搜索结果中可能会出现许多与FastAPI相关的项目。您需要寻找由项目维护者(通常是原作者或核心团队)发布、拥有最多星标(Stars)、分支(Forks)和活跃贡献的仓库。FastAPI的官方仓库通常由其作者 tiangolo 维护。

    • 官方仓库链接https://github.com/tiangolo/fastapi

    点击进入这个仓库后,您会看到:
    * README文件:这是项目的“门面”,包含了项目的简介、安装指南、快速上手教程和关键特性。
    * Star数量:星标数量是项目受欢迎程度的重要指标。
    * Issues (问题):开发者在此报告Bug、提出功能请求或讨论问题。
    * Pull requests (拉取请求):社区成员提交代码贡献的地方。
    * Documentation (文档链接):通常在README或仓库描述中会有指向官方文档的链接,这是学习FastAPI最全面的资源。

通过GitHub仓库,您可以获取最新版本的代码,了解项目的开发动态,甚至参与到项目的贡献中去。

第二部分:FastAPI的本地环境搭建与快速上手

在找到FastAPI的“家”之后,接下来我们将在本地环境中让它跑起来。

1. 前提条件

在开始之前,请确保您的系统已安装:
* Python 3.8+:FastAPI需要Python 3.8或更高版本。
* pip:Python的包管理器,通常随Python一起安装。

2. 安装FastAPI和Uvicorn

FastAPI本身是一个框架,但它需要一个ASGI服务器来运行。Uvicorn是一个轻量级的ASGI服务器,是FastAPI推荐的运行方式。

首先,创建一个新的项目目录并进入:
bash
mkdir my-fastapi-app
cd my-fastapi-app

然后,建议创建一个虚拟环境来隔离项目依赖:
“`bash
python -m venv venv

激活虚拟环境

Windows:

.\venv\Scripts\activate

macOS/Linux:

source venv/bin/activate
“`

激活虚拟环境后,安装FastAPI和Uvicorn:
bash
pip install "fastapi[all]" uvicorn

"fastapi[all]" 会安装FastAPI及其所有可选依赖,包括Pydantic、Starlette、Requests、Jinja2等,方便您快速开始。

3. 编写第一个FastAPI应用

创建一个名为 main.py 的文件,并添加以下代码:

“`python
from fastapi import FastAPI

app = FastAPI()

@app.get(“/”)
async def read_root():
return {“message”: “Hello, FastAPI!”}

@app.get(“/items/{item_id}”)
async def read_item(item_id: int, q: str = None):
return {“item_id”: item_id, “q”: q}
“`

这段代码做了以下几件事:
* from fastapi import FastAPI: 导入 FastAPI 类。
* app = FastAPI(): 创建FastAPI应用实例。
* @app.get("/"): 这是一个装饰器,将 read_root 函数注册为处理HTTP GET请求的根路径(/)。
* async def read_root():: 定义一个异步函数来处理请求,并返回一个JSON响应。
* @app.get("/items/{item_id}"): 定义另一个路径,使用路径参数 item_id
* async def read_item(item_id: int, q: str = None):: 函数参数 item_id: int 声明了 item_id 是一个整数类型,FastAPI会自动进行类型检查。q: str = None 定义了一个可选的查询参数。

4. 运行FastAPI应用

在您的终端中(确保虚拟环境已激活),运行Uvicorn服务器:

bash
uvicorn main:app --reload

  • main: 指的是 main.py 文件。
  • app: 指的是 main.py 文件中创建的 FastAPI() 实例的变量名。
  • --reload: 这个参数让Uvicorn在检测到代码修改时自动重新加载应用,非常适合开发阶段。

运行成功后,您会看到类似如下的输出:

INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [xxxxx]
INFO: Started server process [xxxxx]
INFO: Waiting for application startup.
INFO: Application startup complete.

现在,您的FastAPI应用已经在 http://127.0.0.1:8000 上运行了!

5. 访问API文档

FastAPI最令人赞叹的特性之一是它能自动生成交互式API文档。

  • Swagger UI:在浏览器中访问 http://127.0.0.1:8000/docs。您会看到一个精美的界面,其中列出了所有定义的API端点,并且可以直接在浏览器中测试它们。
  • ReDoc:在浏览器中访问 http://127.0.0.1:8000/redoc。这是另一种风格的API文档,通常用于展示。

这些自动生成的文档不仅节省了手动编写文档的时间,还能确保文档与代码保持同步,极大地提高了开发效率和前后端协作的便利性。

第三部分:深入FastAPI核心特性(代码示例)

FastAPI的强大之处远不止“Hello World”。它通过Python类型提示,提供了强大的数据验证、序列化和依赖注入功能。

1. 路径参数 (Path Parameters)

我们在上面的例子中已经看到了路径参数。FastAPI会根据类型提示自动验证 item_id

“`python

main.py (在现有代码基础上添加或修改)

from fastapi import FastAPI

app = FastAPI()

… (read_root 和 read_item 函数)

@app.get(“/users/{user_id}/items/{item_id}”)
async def read_user_item(user_id: int, item_id: str):
return {“user_id”: user_id, “item_id”: item_id}
``
访问
http://127.0.0.1:8000/users/5/items/foo将返回{“user_id”: 5, “item_id”: “foo”}。如果user_id` 不是整数,FastAPI会自动返回422 Unprocessable Entity错误。

2. 查询参数 (Query Parameters)

查询参数是URL中 ? 后面键值对。

“`python

main.py

from fastapi import FastAPI, Query

app = FastAPI()

@app.get(“/search/”)
async def search_items(q: str = Query(None, min_length=3, max_length=50)):
results = {“search_query”: q}
if q:
results[“items”] = [“itemA”, “itemB”, “itemC”] # 模拟搜索结果
return results
``
这里我们使用了
Query来添加额外的验证,例如min_lengthmax_length
访问
http://127.0.0.1:8000/search/?q=fastapi
如果
q` 的长度不符合要求,FastAPI也会自动报错。

3. 请求体 (Request Body) 和 Pydantic 模型

对于 POSTPUT 等请求,数据通常包含在请求体中。FastAPI与Pydantic紧密集成,可以轻松定义数据模型并自动进行验证。

首先,导入 BaseModel
“`python

main.py

from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None

app = FastAPI()

@app.post(“/items/”)
async def create_item(item: Item):
item_dict = item.dict()
if item.tax:
price_with_tax = item.price + item.tax
item_dict.update({“price_with_tax”: price_with_tax})
return item_dict
``
这里,我们定义了一个
ItemPydantic模型。FastAPI会:
* 将请求体自动解析为
Item类的实例。
* 对传入的数据进行验证,确保
name是字符串、price是浮点数等。
* 为
descriptiontax提供默认值None`,使其成为可选字段。

在Swagger UI (/docs) 中,您可以直接测试这个 POST /items/ 端点,输入JSON数据,感受FastAPI自动验证的强大。

4. 依赖注入系统 (Dependency Injection)

FastAPI的依赖注入系统非常强大,可以用来处理认证、数据库连接、共享逻辑等。

“`python

main.py

from fastapi import FastAPI, Depends, HTTPException, status

app = FastAPI()

async def common_parameters(q: str | None = None, skip: int = 0, limit: int = 100):
return {“q”: q, “skip”: skip, “limit”: limit}

@app.get(“/dep_items/”)
async def read_dep_items(commons: dict = Depends(common_parameters)):
return commons

模拟一个用户验证函数

async def get_current_user(token: str):
if token != “fake-super-secret-token”:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=”Invalid authentication credentials”,
headers={“WWW-Authenticate”: “Bearer”},
)
return {“username”: “currentuser”}

@app.get(“/users/me/”)
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
``Depends(common_parameters)会在read_dep_items被调用前先执行common_parameters函数,并将结果注入到commons参数中。Depends(get_current_user)演示了如何实现简单的认证,如果token不正确,则会抛出HTTPException`。

第四部分:与GitHub的进一步整合(高级用法与贡献)

当您对FastAPI有了初步了解并希望深入时,GitHub仓库再次成为您的宝贵资源。

  1. 克隆仓库并探索示例
    您可以将FastAPI的官方仓库克隆到本地,深入研究其源代码和 examples/ 目录。
    bash
    git clone https://github.com/tiangolo/fastapi.git
    cd fastapi/examples

    这里包含了许多高级用法的示例,是学习FastAPI最佳实践的绝佳途径。

  2. 关注开发动态
    通过关注GitHub仓库,您可以及时收到项目更新通知。查看“Issues”和“Pull requests”可以了解项目正在解决的问题和即将推出的功能。

  3. 社区贡献
    如果您在使用FastAPI过程中发现了Bug,或者有改进建议,甚至希望贡献代码,GitHub是您参与社区的核心平台。

    • 提Issue:清晰地描述您遇到的问题或建议的功能。
    • 提交Pull Request:如果您修复了Bug或增加了新功能,可以提交代码更改。在提交之前,请务必阅读项目的贡献指南(通常在 CONTRIBUTING.md 文件中)。

结论

FastAPI是一个令人兴奋且功能强大的Python Web框架,它将现代Web开发的最佳实践与Python的优雅和类型提示的优势结合在一起。通过GitHub,您可以轻松找到其官方仓库,获取最新信息,并通过简单的pip install命令快速启动您的第一个API服务。其自动文档、数据验证和强大的依赖注入系统,使得构建高性能、易于维护的API变得前所未有的简单。

无论您是初学者还是经验丰富的开发者,FastAPI都值得您深入探索。立即前往GitHub,开始您的FastAPI之旅吧!


This article provides a detailed guide on finding and using FastAPI, starting from GitHub and covering basic setup to core features and advanced GitHub interaction. I’ve tried to keep it comprehensive and practical.
Now I will ensure I have followed all the instructions and finished the task.
The user asked for an article in Chinese, which I have provided.
I have covered:
– How to find FastAPI on GitHub.
– How to install and set up a basic FastAPI application.
– Key features with code examples (path parameters, query parameters, request body with Pydantic).
– How to access API documentation.
– How to interact with the GitHub repository beyond just finding it (exploring examples, contributing).
I believe the task is complete.## FastAPI入门:如何在GitHub上找到并使用它

引言

在当今快速发展的Web开发领域,选择一个高效、易用且性能卓越的框架至关重要。Python生态系统中有许多优秀的Web框架,而FastAPI凭借其出色的性能、现代化的设计理念以及对类型提示的深度支持,迅速成为开发者的宠儿。FastAPI是一个用于构建API的现代、快速(高性能)Web框架,基于标准的Python类型提示,灵感来源于Starlette和Pydantic。它不仅速度快,而且具有自动交互式API文档、数据验证和序列化等开箱即用的特性,极大地提高了开发效率。

本文将引导您如何在GitHub上找到FastAPI的官方仓库,并详细介绍如何从零开始,在您的本地环境中安装、配置并使用FastAPI构建一个简单的API应用。

第一部分:在GitHub上寻找FastAPI

GitHub是全球最大的代码托管平台,也是开源项目的孵化器。找到FastAPI的官方仓库是了解项目、获取最新代码和参与社区的第一步。

  1. 打开GitHub网站
    在您的浏览器中访问 https://github.com/

  2. 使用搜索功能
    在GitHub页面顶部的搜索栏中输入“FastAPI”并按回车键。

  3. 识别官方仓库
    搜索结果中可能会出现许多与FastAPI相关的项目。您需要寻找由项目维护者(通常是原作者或核心团队)发布、拥有最多星标(Stars)、分支(Forks)和活跃贡献的仓库。FastAPI的官方仓库通常由其作者 tiangolo 维护。

    • 官方仓库链接https://github.com/tiangolo/fastapi

    点击进入这个仓库后,您会看到:
    * README文件:这是项目的“门面”,包含了项目的简介、安装指南、快速上手教程和关键特性。
    * Star数量:星标数量是项目受欢迎程度的重要指标。
    * Issues (问题):开发者在此报告Bug、提出功能请求或讨论问题。
    * Pull requests (拉取请求):社区成员提交代码贡献的地方。
    * Documentation (文档链接):通常在README或仓库描述中会有指向官方文档的链接,这是学习FastAPI最全面的资源。

通过GitHub仓库,您可以获取最新版本的代码,了解项目的开发动态,甚至参与到项目的贡献中去。

第二部分:FastAPI的本地环境搭建与快速上手

在找到FastAPI的“家”之后,接下来我们将在本地环境中让它跑起来。

1. 前提条件

在开始之前,请确保您的系统已安装:
* Python 3.8+:FastAPI需要Python 3.8或更高版本。
* pip:Python的包管理器,通常随Python一起安装。

2. 安装FastAPI和Uvicorn

FastAPI本身是一个框架,但它需要一个ASGI服务器来运行。Uvicorn是一个轻量级的ASGI服务器,是FastAPI推荐的运行方式。

首先,创建一个新的项目目录并进入:
bash
mkdir my-fastapi-app
cd my-fastapi-app

然后,建议创建一个虚拟环境来隔离项目依赖:
“`bash
python -m venv venv

激活虚拟环境

Windows:

.\venv\Scripts\activate

macOS/Linux:

source venv/bin/activate
“`

激活虚拟环境后,安装FastAPI和Uvicorn:
bash
pip install "fastapi[all]" uvicorn

"fastapi[all]" 会安装FastAPI及其所有可选依赖,包括Pydantic、Starlette、Requests、Jinja2等,方便您快速开始。

3. 编写第一个FastAPI应用

创建一个名为 main.py 的文件,并添加以下代码:

“`python
from fastapi import FastAPI

app = FastAPI()

@app.get(“/”)
async def read_root():
return {“message”: “Hello, FastAPI!”}

@app.get(“/items/{item_id}”)
async def read_item(item_id: int, q: str = None):
return {“item_id”: item_id, “q”: q}
“`

这段代码做了以下几件事:
* from fastapi import FastAPI: 导入 FastAPI 类。
* app = FastAPI(): 创建FastAPI应用实例。
* @app.get("/"): 这是一个装饰器,将 read_root 函数注册为处理HTTP GET请求的根路径(/)。
* async def read_root():: 定义一个异步函数来处理请求,并返回一个JSON响应。
* @app.get("/items/{item_id}"): 定义另一个路径,使用路径参数 item_id
* async def read_item(item_id: int, q: str = None):: 函数参数 item_id: int 声明了 item_id 是一个整数类型,FastAPI会自动进行类型检查。q: str = None 定义了一个可选的查询参数。

4. 运行FastAPI应用

在您的终端中(确保虚拟环境已激活),运行Uvicorn服务器:

bash
uvicorn main:app --reload

  • main: 指的是 main.py 文件。
  • app: 指的是 main.py 文件中创建的 FastAPI() 实例的变量名。
  • --reload: 这个参数让Uvicorn在检测到代码修改时自动重新加载应用,非常适合开发阶段。

运行成功后,您会看到类似如下的输出:

INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [xxxxx]
INFO: Started server process [xxxxx]
INFO: Waiting for application startup.
INFO: Application startup complete.

现在,您的FastAPI应用已经在 http://127.0.0.1:8000 上运行了!

5. 访问API文档

FastAPI最令人赞叹的特性之一是它能自动生成交互式API文档。

  • Swagger UI:在浏览器中访问 http://127.0.0.1:8000/docs。您会看到一个精美的界面,其中列出了所有定义的API端点,并且可以直接在浏览器中测试它们。
  • ReDoc:在浏览器中访问 http://172.0.0.1:8000/redoc。这是另一种风格的API文档,通常用于展示。

这些自动生成的文档不仅节省了手动编写文档的时间,还能确保文档与代码保持同步,极大地提高了开发效率和前后端协作的便利性。

第三部分:深入FastAPI核心特性(代码示例)

FastAPI的强大之处远不止“Hello World”。它通过Python类型提示,提供了强大的数据验证、序列化和依赖注入功能。

1. 路径参数 (Path Parameters)

我们在上面的例子中已经看到了路径参数。FastAPI会根据类型提示自动验证 item_id

“`python

main.py (在现有代码基础上添加或修改)

from fastapi import FastAPI

app = FastAPI()

… (read_root 和 read_item 函数)

@app.get(“/users/{user_id}/items/{item_id}”)
async def read_user_item(user_id: int, item_id: str):
return {“user_id”: user_id, “item_id”: item_id}
``
访问
http://127.0.0.1:8000/users/5/items/foo将返回{“user_id”: 5, “item_id”: “foo”}。如果user_id` 不是整数,FastAPI会自动返回422 Unprocessable Entity错误。

2. 查询参数 (Query Parameters)

查询参数是URL中 ? 后面键值对。

“`python

main.py

from fastapi import FastAPI, Query

app = FastAPI()

@app.get(“/search/”)
async def search_items(q: str = Query(None, min_length=3, max_length=50)):
results = {“search_query”: q}
if q:
results[“items”] = [“itemA”, “itemB”, “itemC”] # 模拟搜索结果
return results
``
这里我们使用了
Query来添加额外的验证,例如min_lengthmax_length
访问
http://127.0.0.1:8000/search/?q=fastapi
如果
q` 的长度不符合要求,FastAPI也会自动报错。

3. 请求体 (Request Body) 和 Pydantic 模型

对于 POSTPUT 等请求,数据通常包含在请求体中。FastAPI与Pydantic紧密集成,可以轻松定义数据模型并自动进行验证。

首先,导入 BaseModel
“`python

main.py

from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None

app = FastAPI()

@app.post(“/items/”)
async def create_item(item: Item):
item_dict = item.dict()
if item.tax:
price_with_tax = item.price + item.tax
item_dict.update({“price_with_tax”: price_with_tax})
return item_dict
``
这里,我们定义了一个
ItemPydantic模型。FastAPI会:
* 将请求体自动解析为
Item类的实例。
* 对传入的数据进行验证,确保
name是字符串、price是浮点数等。
* 为
descriptiontax提供默认值None`,使其成为可选字段。

在Swagger UI (/docs) 中,您可以直接测试这个 POST /items/ 端点,输入JSON数据,感受FastAPI自动验证的强大。

4. 依赖注入系统 (Dependency Injection)

FastAPI的依赖注入系统非常强大,可以用来处理认证、数据库连接、共享逻辑等。

“`python

main.py

from fastapi import FastAPI, Depends, HTTPException, status

app = FastAPI()

async def common_parameters(q: str | None = None, skip: int = 0, limit: int = 100):
return {“q”: q, “skip”: skip, “limit”: limit}

@app.get(“/dep_items/”)
async def read_dep_items(commons: dict = Depends(common_parameters)):
return commons

模拟一个用户验证函数

async def get_current_user(token: str):
if token != “fake-super-secret-token”:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=”Invalid authentication credentials”,
headers={“WWW-Authenticate”: “Bearer”},
)
return {“username”: “currentuser”}

@app.get(“/users/me/”)
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
``Depends(common_parameters)会在read_dep_items被调用前先执行common_parameters函数,并将结果注入到commons参数中。Depends(get_current_user)演示了如何实现简单的认证,如果token不正确,则会抛出HTTPException`。

第四部分:与GitHub的进一步整合(高级用法与贡献)

当您对FastAPI有了初步了解并希望深入时,GitHub仓库再次成为您的宝贵资源。

  1. 克隆仓库并探索示例
    您可以将FastAPI的官方仓库克隆到本地,深入研究其源代码和 examples/ 目录。
    bash
    git clone https://github.com/tiangolo/fastapi.git
    cd fastapi/examples

    这里包含了许多高级用法的示例,是学习FastAPI最佳实践的绝佳途径。

  2. 关注开发动态
    通过关注GitHub仓库,您可以及时收到项目更新通知。查看“Issues”和“Pull requests”可以了解项目正在解决的问题和即将推出的功能。

  3. 社区贡献
    如果您在使用FastAPI过程中发现了Bug,或者有改进建议,甚至希望贡献代码,GitHub是您参与社区的核心平台。

    • 提Issue:清晰地描述您遇到的问题或建议的功能。
    • 提交Pull Request:如果您修复了Bug或增加了新功能,可以提交代码更改。在提交之前,请务必阅读项目的贡献指南(通常在 CONTRIBUTING.md 文件中)。

结论

FastAPI是一个令人兴奋且功能强大的Python Web框架,它将现代Web开发的最佳实践与Python的优雅和类型提示的优势结合在一起。通过GitHub,您可以轻松找到其官方仓库,获取最新信息,并通过简单的pip install命令快速启动您的第一个API服务。其自动文档、数据验证和强大的依赖注入系统,使得构建高性能、易于维护的API变得前所未有的简单。

无论您是初学者还是经验丰富的开发者,FastAPI都值得您深入探索。立即前往GitHub,开始您的FastAPI之旅吧!

滚动至顶部