当前位置: 首页 > news >正文

织梦开发小说网站教程电脑优化

织梦开发小说网站教程,电脑优化,泰安新闻联播,c 网站开发人员工具依赖注入常用于以下场景#xff1a; 共享业务逻辑#xff08;复用相同的代码逻辑#xff09; 共享数据库连接 实现安全、验证、角色权限 等…… 上述场景均可以使用依赖注入#xff0c;将代码重复最小化。 创建依赖项 依赖项就是一个函数#xff0c;且可以使用与路…依赖注入常用于以下场景 共享业务逻辑复用相同的代码逻辑 共享数据库连接 实现安全、验证、角色权限 等…… 上述场景均可以使用依赖注入将代码重复最小化。 创建依赖项 依赖项就是一个函数且可以使用与路径操作函数相同的参数依赖项函数的形式和结构与路径操作函数一样。因此可以把依赖项当作没有「装饰器」即没有 app.get(/some-path) 的路径操作函数。 from typing import Unionimport uvicorn from fastapi import FastAPI, Dependsapp FastAPI()# 依赖的组件函数 async def common_parameters(q: Union[str, None] None,skip: int 0,limit: int 100, ):return {skip: skip, limit: limit, q: q}app.get(/items/) async def read_items(commons: dict Depends(common_parameters)):return commonsapp.get(/users/) async def read_users(commons: dict Depends(common_parameters)):return commonsif __name__ __main__:uvicorn.run(app) 实现过程 1、导入 Depends from fastapi import Depends 2、定义依赖的组件函数 # 依赖的组件函数 async def common_parameters(q: Union[str, None] None,skip: int 0,limit: int 100, ):return {skip: skip, limit: limit, q: q} 3、声明依赖项 声明依赖项需要使用 Depends 和一个新的参数 async def read_items(commons: dict Depends(common_parameters)): 其他与「依赖注入」概念相同的术语为 资源Resource 提供方Provider 服务Service 可注入Injectable 组件Component 依赖注入系统如此简洁的特性让 FastAPI 可以与下列系统兼容 关系型数据库 NoSQL 数据库 外部支持库 外部 API 认证和鉴权系统 API 使用监控系统 响应数据注入系统 等等…… 类作为依赖项 依赖项时一个可调用的对象Python 中的 可调用对象 是指任何 Python 可以像函数一样 调用 的对象。Python 类也是 可调用对象。因此在 FastAPI 中你可以使用一个 Python 类作为一个依赖项。 实际上 FastAPI 检查的是它是一个 可调用对象函数类或其他任何类型以及定义的参数。 import uvicorn from fastapi import FastAPI, Dependsapp FastAPI()fake_items_db [{item_name: Foo}, {item_name: Bar}, {item_name: Baz}]class CommonQueryParams:def __init__(self, q: str | None None, skip: int 0, limit: int 100):self.q qself.skip skipself.limit limit# FastAPI 调用 CommonQueryParams 类。这将创建该类的一个 实例该实例将作为参数 commons 被传递给你的函数。 app.get(/items/) async def read_items(commons: CommonQueryParams Depends(CommonQueryParams)):response {}if commons.q:response.update({q: commons.q})items fake_items_db[commons.skip: commons.skip commons.limit]response.update({items: items})return responseif __name__ __main__:uvicorn.run(app, host127.0.0.1, port8000) FastAPI 为这些情况提供了一个快捷方式在这些情况下依赖项 明确地 是一个类FastAPI 将 调用 它来创建类本身的一个实例。 快捷写法 commons: CommonQueryParams Depends() 分层依赖注入 假设是用户管理模块创建如下的目录结构以及python文件 schemas/user_schema.py from pydantic import BaseModel, Field from datetime import datetimeclass User(BaseModel):id: int | None Field(description主键ID)username: str | None Field(description用户名)age: int | None Field(description年龄)is_vip: int | None Field(description是否会员 0-不是1-是)create_time: datetime Field(description创建时间) dao/user_dao.py from datetime import datetime from user.schemas.user_schema import Userclass UserDAO:数据层def __init__(self):passdef get_user_by_username(self, username)- User:根据用户名查询用户信息:param username::return:user User(id1, usernamealice, age25, is_vip0, create_timedatetime.now())return user service/user_service.py from fastapi import Dependsfrom user.dao.user_dao import UserDAO from user.schemas.user_schema import Userclass UserService:业务逻辑处理层def __init__(self, user_dao: UserDAO Depends()):self.user_dao user_daodef find_by_username(self, username: str)- User:根据用户名查询用户信息:param username::return:return self.user_dao.get_user_by_username(username) routers/user_routers.py from fastapi import APIRouter, Dependsfrom commons.result import Result from user.exceptions.user_exception import UserNotFoundException from user.service.user_serivce import UserServiceusers APIRouter()users.get(path/find/{username}, summary根据用户名查询用户, response_modelResult) async def find_user_by_username(username: str, user_service: UserService Depends()):user user_service.find_by_username(username)# 用户不存在if user is None:raise UserNotFoundExceptionresult Result()result.data userreturn result commoms/result.py from typing import Anyfrom pydantic import BaseModel, Fieldclass Result(BaseModel):code: int Field(description响应状态码, default200)message: str Field(description响应结果信息, default成功)data: Any Field(description响应结果数据, defaultNone)
http://www.zqtcl.cn/news/399039/

相关文章:

  • 网站定制开发收费标准是多少网站代码优化方案
  • 制作卡牌的网站深圳正规煤气公司
  • 手表网站哪家好网站用图片
  • 群辉nas 做网站wordpress linux 中文
  • 平面设计素材网站排名巩义网站建设方案表
  • 延庆网站制作搜索引擎优化的基础是什么
  • 管理手机网站商城网站备案流程
  • 怀化买房网站网站广告js代码添加
  • 做网站 帮别人卖服务器wordpress主题多页面
  • 代理游戏网站潍坊市建设工程管理处网站
  • 大同推广型网站建设网站规划建设与管理维护第二版答案
  • 做网站需要代码吗户外媒体网站建设免费
  • 做什么网站国外做图标网站
  • 网站建设技术部职责门户网站工作总结
  • 用个人电脑做服务器建网站急切网头像在线制作图片
  • 企业网站制作教程浙江省住房和城乡建设厅网站
  • 一个网络空间如何做两个网站哪个网站兼职做设计比较好
  • jquery代码做的网站免费搭建网站模板
  • 铁路建设监理协会官方网站邯郸市网
  • 马鞍山集团网站建设客流分析系统公司
  • 淘客网站怎么做啊抖音怎么挂小程序赚钱
  • 在哪里申请网站域名美妆销售网站开发的目的
  • 网站自动跳转施秉网站建设
  • 聊城做网站的公司咨询学校网站模板 dedecms
  • 网站域名查询赣州网站设计有哪些
  • 网站设计做多宽150m网站空间流量大吗
  • 制作php网站用什么软件东莞东坑网站建设
  • 怎样做网站外部样式wordpress爱找主题
  • 自己搭建服务器做网站要多久问答网站如何优化
  • 网站用的服务器小程序拉新项目