Skip to content

zjzjzjzj1874/fastapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python

This is a simple fastapi web frame

创建代码库

GitHub创建一个Python仓库,这里命名为fastapi

拉取代码

将自己的代码库克隆到本地开发环境.替换自己的仓库名

git clone git@github.com:zjzjzjzj1874/fastapi.git

创建服务

示例

  • 创建主函数 创建一个名为main.py的函数并写入一下内容:
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}
  • 启动项目 运行以下命令启动:
uvicorn main:app --reload
  • 查看根路由:http://0.0.0.0:8000,输出以下内容:
{
    "Hello": "World"
}
  • 交互式API文档

    访问地址:http://0.0.0.0:8000/docs 访问预览

  • 可选API文档

    访问地址:http://0.0.0.0:8000/redoc 访问预览

至此,我们已经成功创建了一个基于fastapi创建的python的web服务.

示例升级

main.py中添加一个PUT方法接收请求体, 先借助Pydantic来使用标准的Python类型申明请求体.

from typing import Union

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    price: float
    is_offer: Union[bool, None] = None  # bool类型,默认None


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


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


@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

服务器将会自动重载(因为在上面的步骤中你向 uvicorn 命令添加了 --reload 选项)。

添加管理依赖

  • 创建虚拟环境
python3 -m venv venv_fastapi
  • 激活虚拟环境
source venv_fastapi/bin/activate
  • 安装fastapi
pip install fastapi
# 安装所有fastapi的依赖
  • 写入依赖
pip freeze > requirements.txt

如果仅仅想追加依赖,使用以下命令:

pip freeze >> requirements.txt

项目部署

编写Dockerfile

Dockerfile

编写docker-compose文件

docker-compose

镜像构建

docker-compose build fastapi

启动镜像

docker-compose up -d

查看服务

docker ps

检查项目

如果您使用默认的配置,那么您访问本地 http://0.0.0.0/docs ,即可看到swagger的接口文档

Todo list

  • 框架搭建
  • 依赖添加
  • MongoDB插入/查询
  • 添加Dockerfile&&Docker-compose部署文件

About

Python FastAPI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published