(1)安装fastapi和uvicorn。
- pip install fastapi
-
- pip install uvicorn
(2)写一个测试服务器代码文件app_main.py:
- from fastapi import FastAPI
-
- app = FastAPI()
-
-
- @app.get("/")
- async def root():
- ret = {
- 'code': 1,
- 'msg': 'server ok'
- }
-
- return ret
(3)在控制台用命令启动服务器:
uvicorn app_main:app --reload
此时会看到输出:

在浏览器打开127.0.0.1:8000输出:

修改app_main.py代码,实现一个简单的功能,抽取用户通过浏览器传递过来的参数:
- from fastapi import FastAPI
-
- app = FastAPI()
-
-
- @app.get("/")
- async def root():
- ret = {
- 'code': 1,
- 'msg': 'server ok'
- }
-
- return ret
-
-
- @app.get("/getuser/{username}")
- async def index(username: str):
- ret = {
- 'code': 100,
- 'msg': f'hello,{username}'
- }
-
- return ret
记得重启服务器。此时访问地址时候传入一个值:

通过/docs访问:

也可以通过/redoc查看:

FastAPI(内部服务器uvicorn)启动时候指定IP地址和端口,需要指定--host参数和--port参数:
uvicorn app_main:app --host 0.0.0.0 --port 8080 --reload
- @app.get("/items/{id}")
- def read_item(id: int = 0, query: str = '默认值'):
- return {"id": id, "query": query}

如果为query传入一个参数:

- @app.get("/sum/")
- def sum_item(a: int = 0, b: int = 0):
- return {"sum": a + b}

如果想以非控制台命令:
uvicorn app_main:app --reload
这样的方式启动fastapi,也可以用标准的python的入口main函数实现,但需要用uvicorn:
- import uvicorn
- from fastapi import FastAPI
-
- app = FastAPI()
-
-
- @app.get("/")
- async def root():
- ret = {
- 'code': 1,
- 'msg': 'server ok'
- }
-
- return ret
-
-
- if __name__ == '__main__':
- uvicorn.run(app=app, host="0.0.0.0", port=8080)