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

做一个网站大概多少钱养生网站源码

做一个网站大概多少钱,养生网站源码,网站备案黑名单,网站建设最新FASTAPI系列 20-异常处理器exception_handler 文章目录 FASTAPI系列 20-异常处理器exception_handler前言一、HTTPException 异常#xff1f;二、覆盖默认的HTTPException 异常三、覆盖请求验证异常RequestValidationError 源码分析 总结更多内容#xff0c;请关注公众号 前言…FASTAPI系列 20-异常处理器exception_handler 文章目录 FASTAPI系列 20-异常处理器exception_handler前言一、HTTPException 异常二、覆盖默认的HTTPException 异常三、覆盖请求验证异常RequestValidationError 源码分析 总结更多内容请关注公众号 前言 通常我们可以通过 raise 抛出一个 HTTPException 异常请求参数不合法会抛出RequestValidationError 异常这是最常见的2种异常。 一、HTTPException 异常 向客户端返回 HTTP 错误响应可以使用 raise 触发 HTTPException。 from fastapi import FastAPI, HTTPExceptionapp FastAPI()app.get(/path/{name}) async def get_name(name: str): if name ! Teacher Li: raise HTTPException(404, detailfname: {name} not found) return {name: name} 二、覆盖默认的HTTPException 异常 查看HTTPException 异常相关源码 from starlette.exceptions import HTTPException as StarletteHTTPException class HTTPException(StarletteHTTPException): def __init__( self, status_code: int, detail: Any None, headers: Optional[Dict[str, Any]] None, ) - None: super().__init__(status_codestatus_code, detaildetail, headersheaders) HTTPException 异常是继承的 starlette 包里面的 HTTPException覆盖默认异常处理器时需要导入 from starlette.exceptions import HTTPException as StarletteHTTPException并用 app.excption_handler(StarletteHTTPException) 装饰异常处理器。 from fastapi import FastAPI, Request from fastapi.exceptions import HTTPException from fastapi.responses import PlainTextResponse, JSONResponse from starlette.exceptions import HTTPException as StarletteHTTPException app FastAPI() # # 捕获 HTTPException 异常 app.exception_handler(StarletteHTTPException) def http_error(request, exc): print(exc.status_code) print(exc.detail) # return JSONResponse({error_msg: exc.detail}, status_codeexc.status_code) return PlainTextResponse(contentexc.detail, status_codeexc.status_code) app.get(/path/{name}) async def get_name(name: str): if name ! Teacher Li: raise HTTPException(404, detailfname: {name} not found) return {name: name} 三、覆盖请求验证异常 请求中包含无效数据时FastAPI 内部会触发 RequestValidationError。该异常也内置了默认异常处理器。覆盖默认异常处理器时需要导入 RequestValidationError并用 app.excption_handler(RequestValidationError) 装饰异常处理器。这样异常处理器就可以接收 Request 与异常。 from fastapi import FastAPI, HTTPException from fastapi.exceptions import RequestValidationError from fastapi.responses import PlainTextResponse from starlette.exceptions import HTTPException as StarletteHTTPExceptionapp FastAPI()app.exception_handler(RequestValidationError) async def validation_exception_handler(request, exc):return PlainTextResponse(str(exc), status_code400)app.get(/user/{user_id}) async def get_user(user_id: int):if user_id 3:raise HTTPException(status_code418, detailNope! I dont like 3.)return {user_id: user_id} RequestValidationError 源码分析 RequestValidationError 相关源码 class RequestValidationError(ValidationError): def __init__(self, errors: Sequence[ErrorList], *, body: Any None) - None: self.body body super().__init__(errors, RequestErrorModel)使用示例 from fastapi import FastAPI, Request, status from fastapi.encoders import jsonable_encoder from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse from pydantic import BaseModelapp FastAPI()app.exception_handler(RequestValidationError) async def validation_exception_handler(request: Request, exc: RequestValidationError): print(exc.json()) print(exc.errors()) print(exc.body) # 请求body return JSONResponse( status_code400, contentjsonable_encoder({detail: exc.errors(), body: exc.body}), ) class Book(BaseModel): name: str price: floatapp.post(/books/) async def create_book(book: Book): return book总结 FastAPI 调用的就是 RequestValidationError 类因此如果在 response_model 中使用 Pydantic 模型且数据有错误时在日志中就会看到这个错误。但客户端或用户看不到这个错误。反之客户端接收到的是 HTTP 状态码为 500 的「内部服务器错误」。这是因为在_响应_或代码不是在客户端的请求里中出现的 Pydantic ValidationError 是代码的 bug。修复错误时客户端或用户不能访问错误的内部信息否则会造成安全隐患。 更多内容请关注公众号
http://www.pierceye.com/news/656825/

相关文章:

  • 西安建网站做自动化设备哪个网站
  • 深圳优化网站关键词wordpress如何拖移小工具
  • 优秀网站设计欣赏国内网站后期
  • 计算机应用技术php网站开发php网站进后台
  • asp网站安全小x导航正品
  • 陕西省建设监理协会网站成绩查询如何用网站做课件
  • 帝国网站怎么仿站个人做旅游网站的意义
  • 网站建设白沟做公众号策划的网站
  • 站长工具怎么用知名做网站哪家好
  • 做视频网站怎么备案企业内网
  • 建设网站南沙区建湖做网站找哪家好
  • 做网站应该会什么问题视频网站做app
  • 南阳做网站费用企业品牌维护
  • 分形科技做网站怎么样网站常用的js效果
  • 做企业展示网站网站建设与制作段考试题
  • 设计网站哪个好用网站建设策划方案t
  • 化妆培训学校网站建设徐州市工程建设交易平台
  • 杭州正规制作网站公司吗网站如何三合一
  • php网站开发说明手机网站建设的公司排名
  • 网站开发asp.net和sql数据库网页制作教程(第三版)书籍
  • wordpress搬站手机网站模板 html5
  • 免费设计网站网站开发及建设费用
  • 推广qq群的网站androidstudio开发app教程
  • 一个公司备案多个网站要注意合肥网站策划
  • 做网站推广也要营业执照吗网站关键词排名优化技巧
  • 网站建设需要考啥证广告设计与制作专业课程
  • 泸州市往建局建设银行网站名称广州网站建设 推广公司哪家好
  • 运维网站制作dw设计个人网页
  • 南城网站建设公司信息吉林省建设招标网站
  • 怎么把自己的网站上传到百度wordpress 文章拆分