2 Star 24 Fork 14

而立科技 / FastAPI-Plus-Demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

FastAPI Demo

这是一个Python FastAPI实例工程。

Github: FastAPI Demo

https://github.com/zhenqiang-sun/fastapi_demo/ https://gitee.com/erlitech/fastapi_demo/

环境组件

版本:

Python 3.8

组件:

项目结构

├─app    # 项目代码目录
│  ├─config      # 配置文件目录
│  │  ├─anonymous.py  # 可匿名访问接口配置文件
│  │  ├─db.py         # 数据库连接配置文件,关系数据库,如mysql
│  │  ├─fastapi.py    # FastAPI项目配置文件
│  │  ├─mongo.py      # mongo数据库连接配置文件
│  │  └─redis.py      # redis连接配置文件
│  ├─controller  # 控制器层,API入口
│  ├─dao         # DAO层,数据访问对象
│  ├─model       # Model层,数据表对象
│  ├─schema      # Schema层,数据结构验证层,对API出入参数的校验、过滤、转换
│  ├─service     # Service层,业务逻辑处理层
│  ├─sql         # 原生SQL文件目录,复杂的SQL语句单独存放这里
│  ├─templates   # 模板目录,如html、excel、email等模板文件
│  ├─temporary   # 临时文件目录,运行过程中生成的临时文件存放
│  └─utils       # 工具箱
├─docker  # 项目docker运行脚步目录
│  ├─deploy.sh   # shell部署脚本
│  ├─deocker-compose.yml  # deocker-compose部署脚本
│  └─run.sh      # docker内运行项目脚本,采用uvicorn
├─res     # 项目静态资源目录,如附件、图片、视频等文件
├─venv    # python 虚拟环境目录
├─dev_run.py          # 开发模式运行项目
└─dev_db_2_model.py   # 根据已有数据库表生成 ORM 使用的 model.py
├─dev_model_2_db.py   # 根据已有 ORM 使用的 model.py 生成数据库表
└─dev_generate_model.py   # 基于Demo代码生成新的模块,省去复制粘贴

开发运行

# 初始化venv:
virtualenv venv

# 如提示找不到virtualenv,则先执行:
sudo pip install -i https://mirrors.aliyun.com/pypi/simple/ virtualenv

# 进入venv for Linux、Mac:
source venv/bin/activate

# 进入venv for Windows
venv\Scripts\activate.bat

# 安装依赖环境:
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt

# 开发运行
python dev_run.py

# 根据已有数据库表生成 ORM 使用的 model.py
python dev_db_2_model.py

# 根据已有 ORM 使用的 model.py 生成数据库表
python dev_model_2_db.py

# 基于Demo代码生成新的模块,省去复制粘贴
python dev_generate_model.py 

接口风格

采用RESTful风格,但有几点特殊

接口风格特殊点

  • 1、使用版本,且放置在前,如/v1/**
  • 2、使用POST方法获取列表,因为要传递过滤和搜索参数,所以POST更方便。
  • 3、使用名字单数,一方面因为上一条,另一方面除了列表其实一直是对单条数据进行操作,所以使用单数。
  • 4、基于上两条,所以获取列表的接口通常是名词后加list,如:/v1/category/list。

接口风格举例

请求方法 路径 说明
POST /v1/category 创建一个类别
DELETE /v1/category/{id} 删除一个类别
PUT /v1/category/{id} 修改一个类别
GET /v1/category/{id} 获取一个类别
POST /v1/category/list 获取类别列表

接口实例

avatar

Copyright (c) 2018 The Python Packaging Authority Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

这是一个Python FastAPI实例工程。 展开 收起
Python 等 2 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/erlitech/fastapi_demo.git
git@gitee.com:erlitech/fastapi_demo.git
erlitech
fastapi_demo
FastAPI-Plus-Demo
main

搜索帮助