---
url: /fastapi/introduction.md
description: FastAPI是一个用于构建API的现代、快速（高性能）的web框架。
---

# 高性能的Python的Web开发框架：FastAPI

如果你问我学习Web开发需要多长时间，我的回答是：五分钟(前提是有Python基础)。

本文将为大家推荐一款高性能、易于学习、高效编码且生产可用的Web开发框架——FastAPI。

## 什么是FastAPI

![FastAPI](/img/1df3ff56-ac9d-4022-bae3-59474340b534.png)

FastAPI是一个用于构建API的现代、快速（高性能）的web框架。

> 前后端分离已经成为Web开发的主流，FastAPI框架则主要为构建API而生，不再关心页面渲染相关的能力。

FastAPI也提出了一句响亮的口号：

**FastAPI 框架，高性能，易于学习，高效编码，生产可用**

您心动了吗？

## FastAPI关键特性

* 快捷

可与 NodeJS 和 Go 并肩的极高性能（归功于 Starlette 和 Pydantic）。最快的 Python web 框架之一。

* 高效编码

提高功能开发速度约 200％ 至 300％。

* 更少bug

减少约 40％ 的人为（开发者）导致错误。

* 智能

极佳的编辑器支持。处处皆可自动补全，减少调试时间。

* 简单

设计的易于使用和学习，阅读文档的时间更短。

* 简短

使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。

* 健壮

生产可用级别的代码。还有自动生成的交互式文档。

* 标准化

基于（并完全兼容）API 的相关开放标准：OpenAPI (以前被称为 Swagger) 和 JSON Schema。

## 大佬对FastAPI的评价

我说好没得用，看看全球大佬们的评价吧。

**Kabir Khan - 微软**

最近我一直在使用 FastAPI。实际上我正在计划将其用于我所在的微软团队的所有机器学习服务。其中一些服务正被集成进核心 Windows 产品和一些 Office 产品。

**Piero Molino，Yaroslav Dudin 和 Sai Sumanth Miryala - Uber**

我们选择了 FastAPI 来创建用于获取预测结果的 REST 服务。\[用于 Ludwig]

**Kevin Glisson，Marc Vilanova，Forest Monsen - Netflix**

Netflix 非常高兴地宣布，正式开源我们的危机管理编排框架：Dispatch！\[使用 FastAPI 构建]

**Brian Okken - Python Bytes 播客主持人**

FastAPI 让我兴奋的欣喜若狂。它太棒了！

**Timothy Crosley - Hug 作者**

老实说，你的作品看起来非常可靠和优美。在很多方面，这就是我想让 Hug 成为的样子 - 看到有人实现了它真的很鼓舞人心。

**Ines Montani - Matthew Honnibal - Explosion AI 创始人 - spaCy 作者**

如果你正打算学习一个现代框架用来构建 REST API，来看下 FastAPI 它快速、易用且易于学习

我们已经将 API 服务切换到了 FastAPI  我认为你会喜欢它的

看了大佬们的评价，您有心动吗？

## 快速开始

1. 安装依赖包

```sh
pip install fastapi

pip install "uvicorn[standard]"
```

2. 完成一个Demo

创建一个`main.py`文件，并敲入那神奇的代码（建议一个一个字符敲出来，体验见证神奇的过程，它是那么的美妙！）

```python
from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}
```

3. 运行

在终端输入以下命令启动服务：

```sh
uvicorn main:app --reload
```

需要注意的是，启动命令需要在`main.py`文件目录下启动。

启动后效果如下图

![FastAPI启动](/img/b2d025fa-0746-491f-91f8-5d713fb268e9.png)

4. 访问

打开浏览器，在地址栏输入`http://127.0.0.1:8000`，当您看到`{"Hello": "World"}`，说明您已经完成了一个Web服务。

到此，您心动了吗？

如果心动了，不妨花5分钟时间体验一下吧。

## 进阶

本文为您提供了一个最简单的Demo，如果在您的工作或者学习中想要进一步学习FastAPI并用于复杂的任务场景，推荐您阅读官方文档。

关注：遇码，回复：**FastAPI**，获取官方文档地址。
