From e4dc0d80c4040fdb905ccff43da1ce14b27ea44f Mon Sep 17 00:00:00 2001 From: zhutt <1163562824@qq.com> Date: Sat, 19 Sep 2026 14:49:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=E3=80=8C/=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- log.py | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ midlleware.py | 26 ++++++++++++++++++++ order_api.py | 24 +++++++++++++++++++ product_api.py | 24 +++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 log.py create mode 100644 midlleware.py create mode 100644 order_api.py create mode 100644 product_api.py diff --git a/log.py b/log.py new file mode 100644 index 0000000..029735f --- /dev/null +++ b/log.py @@ -0,0 +1,65 @@ +import logging +''' +使用日志的六个步骤: +①定义lgger日志器(谁来产生日志,默认是root): lg = logging.getLogger( 'abc' ) +②设置日志等级: lg.setLevel( logging.INFO ) +③定义handlers(产生的日志输出到哪里,到控制台还是文件): con_hand = logging.StreamHandler() +④定义formatter日志打印格式,并绑定handlers + con_hand = logging.StreamHandler() # ③定义handlers(产生的日志输出到哪里,到控制台还是文件) + formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' + ,datefmt='%Y-%m-%d %H:%M:%S' # 定义时间的格式 + ) # ④定义formatter日志打印格式,并绑定handlers + con_hand.setFormatter( formatter ) # 并绑定handlers +⑤将handlers的处理添加到日志器进行记录 + lg.addHandler( con_hand ) +⑥打印日志测试 + lg.info('xxxx') + lg.debug('xxx') +''' +class Log: + def __init__(self,name,lv): + self.logName = logging.getLogger( name ) # ①定义lgger日志器 + self.logName.setLevel( eval( f'logging.{lv.upper()}' ) ) # ②设置日志等级 + self.formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' + ,datefmt='%Y-%m-%d %H:%M:%S' # 定义时间的格式 + ) # ④定义formatter日志打印格式,并绑定handlers + self.handlers = self.logName.handlers # 定义属性来接收 handlers,方便外部查看有没有添加handlers + def logConsol(self): + con_hand = logging.StreamHandler() # ③定义handlers(产生的日志输出到哪里,到控制台还是文件) + con_hand.setFormatter( self.formatter ) # 并绑定handlers + if 'StreamHandler' not in str(self.handlers): # 如果绑定输出到控制台已经绑定好了,就不会重复绑定了 + self.logName.addHandler( con_hand ) # ⑤将handlers的处理添加到日志器进行记录 + def logFile(self,fileName): + file_hand = logging.FileHandler( fileName,encoding='utf-8' ) # ③定义handlers + file_hand.setFormatter( self.formatter ) + if 'FileHandler' not in str(self.handlers): + self.logName.addHandler(file_hand) # ⑤将handlers的处理添加到日志器 + def message(self,lv,mes): + lv = lv.lower() # 把日志等级处理成小写 + if lv == 'debug': + self.logName.debug( mes ) + elif lv == 'info': + self.logName.info(mes) + elif lv == 'warning': + self.logName.warning(mes) + elif lv == 'error': + self.logName.error(mes) + elif lv == 'critical': + self.logName.critical(mes) + else: + print('请输入正确的日志级别!') + +if __name__ == '__main__': + lg1 = Log('ai0824','InFo') + lg1.logConsol() + lg1.message( 'info','这是info日志...' ) + lg1.message('warning', '这是warning日志...') + + lg1.logFile('ai0824.log') + lg1.message( 'error','这是error级别的日志...' ) + + lg1.logConsol() + lg1.message('info', '这是info日志...') + + + print( lg1.handlers ) \ No newline at end of file diff --git a/midlleware.py b/midlleware.py new file mode 100644 index 0000000..700ead8 --- /dev/null +++ b/midlleware.py @@ -0,0 +1,26 @@ +# ④ 编写一个中间文件midlleware.py文件,写两个中间件,一个中间件函数是用来拦截ip黑名单的,黑名单自定义, +# 另一个中间件是用来记录每个访问接口的执行时间的,在main.py文件里调用中间件 +from fastapi import Request,Response +from datetime import datetime +from time import time + +async def m1(req:Request,next): + if req.client.host not in ['192.168.5.20','192.168.5.17']: + r1 = await next(req) + return r1 + else: + return Response(content='别上网了,去学习吧') + +async def m2(req:Request,next): + start = datetime.now() + print(f'请求执行的时间:{start}') + r2 = await next(req) + end = datetime.now() + print(f'请求执行的时间:{end}') + return r2 + + + + + + diff --git a/order_api.py b/order_api.py new file mode 100644 index 0000000..6c53474 --- /dev/null +++ b/order_api.py @@ -0,0 +1,24 @@ +from fastapi import APIRouter + +# 订单一 +OrderRouter1 = APIRouter() + +@OrderRouter1.get("/orders1",summary='查询订单1信息') +def get_goods(): + return '查询订单1信息' + +@OrderRouter1.post("/orders1",summary='新增订单1信息') +def post_goods(): + return '新增订单1信息' + +# 订单二 + +OrderRouter2 = APIRouter() + +@OrderRouter2.get("/orders2",summary='查询订单2信息') +def get_goods(): + return '查询订单2信息' + +@OrderRouter2.post("/orders2",summary='新增商品2信息') +def post_goods(): + return '新增商品2信息' \ No newline at end of file diff --git a/product_api.py b/product_api.py new file mode 100644 index 0000000..76d372a --- /dev/null +++ b/product_api.py @@ -0,0 +1,24 @@ +from fastapi import APIRouter + +# 商品一 +GoodsRouter1 = APIRouter() + +@GoodsRouter1.get("/goods1",summary='查询商品1信息') +def get_goods(): + return '查询商品1信息' + +@GoodsRouter1.post("/goods1",summary='新增商品1信息') +def post_goods(): + return '新增商品1信息' + +# 商品二 + +GoodsRouter2 = APIRouter() + +@GoodsRouter2.get("/goods2",summary='查询商品2信息') +def get_goods(): + return '查询商品2信息' + +@GoodsRouter2.post("/goods2",summary='新增商品1信息') +def post_goods(): + return '新增商品2信息' \ No newline at end of file