Introduction
FastAPI framework, high performance, easy to learn, fast to code, ready for production
- Documentation: https://fastapi.tiangolo.com
- Source Code: https://github.com/tiangolo/fastapi
FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints.
Features
The key features are:
- Fast: Very high performance, on par with NodeJS and Go (thanks to Starlette and Pydantic). One of the fastest Python frameworks available.
- Fast to code: Increase the speed to develop features by about 200% to 300%.
- Fewer bugs: Reduce about 40% of human (developer) induced errors.
- Intuitive: Great editor support. Completion everywhere. Less time debugging.
- Easy: Designed to be easy to use and learn. Less time reading docs.
- Short: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs.
- Robust: Get production-ready code. With automatic interactive documentation.
- Standards-based: Based on (and fully compatible with) the open standards for APIs: OpenAPI (previously known as Swagger) and JSON Schema.
- 精简编码 代码重复率低
- 自带 APl 交互文档 开发成果随时交付
- API 开发标准化,比如标准的 error message
note
- 2019 年创建
- 还未发布 1.0 版本
- 可以用在产线
- 作者是德国人
- 基于 Python 3.7+
- 将各个优秀的框架组合起来+ python type hints
- 内置了 Swagger 文档
Install
一键安装:
pip install "fastapi[all]"
以上将同时安装 uvicorn
,如果没有写 [all]
则需要两个都安装:
pip install fastapi
pip install uvicorn
验证安装结果:
$ python
>>>import fastapi
>>>fastapi.__version__
uvicorn --version
Hello World
The simplest FastAPI file could look like this:
main.py
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/")
async def root(): # you can also remove async keyword
return {"message": "Hello World"}
Copy that to a file main.py
.
Run the live server:
$ uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
tip
The command uvicorn main:app
refers to:
main
: the filemain.py
(the Python "module").app
: the object created inside ofmain.py
with the lineapp = FastAPI()
.--reload
: make the server restart after code changes. Only use for development.
The default port is "8000", and now you can open http://127.0.0.1:8000/docs
to see the automatic interactive API documentation (provided by Swagger UI):
You can also add __name__
on the bottom of main.py
:
main.py
if __name__ == "__main__":
uvicorn.run("main:app") # or uvicorn.run(app="main:app")
And then run python main.py
to start server directly.
参数 | 作用 |
---|---|
app | 运行的 py 文件 :FastAPI 实例对象 |
host | 访问 url,默认 127.0.0.1 |
port | 访问端口,默认 8080 |
reload | 热更新,有内容修改自动重启服务器 |
debug | 同 reload |
reload_dirs | 设置需要 reload 的目录,List[str] 类型 |
log_level | 设置日志级别,默认 info |