如果需要构建应用程序或api,很少将所有的内容都放入一个文件中。
fastapi提供了一个方便的工具可灵活的构建应用。(类似于flask的蓝图)
假如文件结构如下:
.
├── app
│ ├── init.py
│ ├── main.py
│ └── routers
│ ├── init.py
│ ├── items.py
│ └── users.py

  • 该app目录包含所有内容。
  • 该app目录有一个空文件app/init.py。
    • 因此,该app目录是“ Python包”(“ Python模块”的集合)。
  • 该app目录还有一个app/main.py文件。
    • 由于它位于Python软件包目录中(因为存在一个文件__init__.py),因此它是该软件包的“模块”:app.main。
  • 有一个子目录app/routers/。
  • 子目录app/routers也有一个空文件__init__.py。
    • 因此,它是一个“ Python子包”。
  • 该文件app/routers/items.py在旁边app/routers/init.py。
    • 因此,这是一个子模块:app.routers.items。
  • 该文件app/routers/users.py在旁边app/routers/init.py。
    • 因此,这是一个子模块:app.routers.users。
      APIRouter
from fastapi import APIRouterrouter = APIRouter()@router.get("/users/", tags=["users"])
async def read_users():return [{"username": "Foo"}, {"username": "Bar"}]@router.get("/users/me", tags=["users"])
async def read_user_me():return {"username": "fakecurrentuser"}@router.get("/users/{username}", tags=["users"])
async def read_user(username: str):return {"username": username}

可以将APIRouter视为“迷你FastAPI”类。
支持所有相同的选项。
所有相同的参数,响应,依赖性,标签等。

然后在main文件中:

from fastapi import Depends, FastAPI, Header, HTTPExceptionfrom .routers import items, usersapp = FastAPI()async def get_token_header(x_token: str = Header(...)):if x_token != "fake-super-secret-token":raise HTTPException(status_code=400, detail="X-Token header invalid")app.include_router(users.router)
app.include_router(items.router,prefix="/items",tags=["items"],dependencies=[Depends(get_token_header)],responses={404: {"description": "Not found"}},
)

fastapi(二十)-大型项目文件结构相关推荐

  1. Gradle学习(二十)——多项目构建详解

    跨项目配置 虽然子项目之间可以完全隔离单独配置,但是子项目直接有相同特征的情况也是很常见的,多个项目共享配置是更好的选择. 配置和执行 在gradle学习-十八-构建的生命周期这一篇中我们已经讲过Gr ...

  2. ballerina 学习二十六 项目docker 部署 运行(二)

    ballerina 从发布,到现在官方文档的更新也是很给力的,同时也有好多改进,越来越好用了 可以参考官方文档 https://ballerina.io/learn/by-guide/restful- ...

  3. 搭建大型分布式服务(二十五)如何将应用部署到TKE容器集群?

    系列文章目录 文章目录 系列文章目录 前言 一.本文要点 二.开发环境 三.部署容器服务 1.制作Nginx镜像,用来打包前端web服务. 2.创建工作负载,用来运行前端web服务. 3.配置serv ...

  4. Vue2+VueRouter2+webpack 构建项目实战(二)目录以及文件结构

    Vue2+VueRouter2+webpack 构建项目实战(二)目录以及文件结构 2017年8月补充 2016年,我写了一系列的 VUE 入门教程,当时写这一系列博文的时候,我也只是一个菜鸟,甚至在 ...

  5. (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例

    Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21 我要评论 这篇文章主要介绍了Android项 ...

  6. Laravel大型项目系列教程(二)之用户管理

    Laravel大型项目系列教程(二) 一.前言 本节教程将大概实现用户的注册.修改个人信息.管理用户功能 二.Let's go 1.创建用户注册视图 <span style="font ...

  7. Android项目实战(二十二):启动另一个APP or 重启本APP

    Android项目实战(二十二):启动另一个APP or 重启本APP 原文:Android项目实战(二十二):启动另一个APP or 重启本APP 一.启动另一个APP 目前公司项目需求,一个主AP ...

  8. (100)详细描述一个你做过的项目, 面试必问(二十四)(第20天)

    (100)详细描述一个你做过的项目, 面试必问(二十四)(第20天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)详细描述一个你做过的项目, 面试必问(二十四) ...

  9. Android项目实战(二十):浅谈ListView悬浮头部展现效果

    Android项目实战(二十):浅谈ListView悬浮头部展现效果 原文:Android项目实战(二十):浅谈ListView悬浮头部展现效果 先看下效果:需求是 滑动列表 ,其中一部分视图(粉丝数 ...

最新文章

  1. CR--同事分享学习
  2. HTTP长连接和短连接以及推送服务原理(转)
  3. innodb_force_recovery的值意思
  4. vue中v-model原理
  5. gRPC .NET Core跨平台学习
  6. ul 响应式 布局_HTML5中响应式布局怎么弄??
  7. loading窗口动画 web_在页面未加载完之前显示loading动画
  8. java excel导出 模板_Java Excel 导出 模板
  9. 大话设计模式读书笔记10----外观模式(Facade)
  10. 湖南卫视小年夜春晚-2013湖南卫视小年夜直播【直播视频现场高清完整版____
  11. TensorFlow 资源大全中文版
  12. AtCoder Beginner Contest 182B
  13. 用ASP.NET MVC自己管理自己的View:ASP.NET MVC File Management 【转】
  14. 语音通知事件提醒功能实现流程
  15. ASP.NET Core使用微软官方类库实现汉字简繁切换以及转拼音
  16. c语言如何生成csv文件格式,生成 csv 文件
  17. Blowfish加密算法
  18. 微信公众号开发之生成带参数的二维码
  19. WINVNC源码阅读(三)
  20. Android最佳实践之性能 - 电池续航时间优化

热门文章

  1. 区块链溯源:如何实现全球商品的溯源?
  2. asp毕业设计——基于asp+access的家教信息管理系统设计与实现(毕业论文+程序源码)——家教信息管理系统
  3. 泊松分布分析足球比赛
  4. bugku 三色绘恋
  5. NetBIOS名称欺骗和LLMNR欺骗
  6. 路径、形状工具与选区
  7. 【phpcms-v9】phpcms-v9中栏目页的静态化生成
  8. C语言编写字符串连接函数
  9. React高阶组件和高阶函数
  10. focus伪类选择器