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

交友免费网站建设系统自动删除了wordpress

交友免费网站建设,系统自动删除了wordpress,资阳优化团队预订,网站建设运维自查问题清单前言 通常我们可以通过 raise 抛出一个 HTTPException 异常#xff0c;请求参数不合法会抛出RequestValidationError 异常#xff0c;这是最常见的2种异常。 HTTPException 异常 向客户端返回 HTTP 错误响应#xff0c;可以使用 raise 触发 HTTPException。 from fastap…前言 通常我们可以通过 raise 抛出一个 HTTPException 异常请求参数不合法会抛出RequestValidationError 异常这是最常见的2种异常。 HTTPException 异常 向客户端返回 HTTP 错误响应可以使用 raise 触发 HTTPException。 from fastapi import FastAPI, HTTPExceptionapp FastAPI()app.get(/path/{name}) async def read_unicorn(name: str): if name yoyo: raise HTTPException(404, detailfname: {name} not found) return {path_name: name}默认情况下返回json格式 HTTP/1.1 404 Not Found date: Wed, 27 Sep 2023 02:07:07 GMT server: uvicorn content-length: 22 content-type: application/json{detail:Not Found}覆盖默认的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 read_unicorn(name: str): if name yoyo: raise HTTPException(404, detailfname: {name} not found) return {path_name: name}这样原来的 HTTPException 返回 json 格式现在改成返回text/plain 文本格式了。 HTTP/1.1 404 Not Found date: Wed, 27 Sep 2023 07:24:58 GMT server: uvicorn content-length: 20 content-type: text/plain; charsetutf-8name: yoyo not found覆盖请求验证异常 请求中包含无效数据时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(/items/{item_id}) async def read_item(item_id: int):if item_id 3:raise HTTPException(status_code418, detailNope! I dont like 3.)return {item_id: item_id}访问 /items/foo可以看到以下内容替换了默认 JSON 错误信息 {detail: [{loc: [path,item_id],msg: value is not a valid integer,type: type_error.integer}] }以下是文本格式的错误信息 HTTP/1.1 400 Bad Request date: Wed, 27 Sep 2023 07:30:38 GMT server: uvicorn content-length: 103 content-type: text/plain; charsetutf-81 validation error for Request path - item_idvalue is not a valid integer (typetype_error.integer)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 Item(BaseModel): title: str size: int app.post(/items/) async def create_item(item: Item): return item现在试着发送一个无效的 item例如 {title: towel,size: XL }运行结果 HTTP/1.1 400 Bad Request date: Wed, 27 Sep 2023 07:51:36 GMT server: uvicorn content-length: 138 content-type: application/json{detail:[{loc:[body,size],msg:value is not a valid integer,type:type_error.integer}],body:{title:towel,size:XL}}RequestValidationError 和 ValidationError 如果您觉得现在还用不到以下技术细节可以先跳过下面的内容。 RequestValidationError 是 Pydantic 的 ValidationError的子类。 FastAPI 调用的就是 RequestValidationError 类因此如果在 response_model 中使用 Pydantic 模型且数据有错误时在日志中就会看到这个错误。 但客户端或用户看不到这个错误。反之客户端接收到的是 HTTP 状态码为 500 的「内部服务器错误」。 这是因为在_响应_或代码不是在客户端的请求里中出现的 Pydantic ValidationError 是代码的 bug。 修复错误时客户端或用户不能访问错误的内部信息否则会造成安全隐患。
http://www.dnsts.com.cn/news/96297.html

相关文章:

  • 主机搭建网站教程建设网站的价钱
  • 网站制作平台有哪些wordpress Honey 主题
  • 网站公司备案通知网站宣传工作
  • 微信支付 企业网站挖掘企业构思的途径
  • 织梦网站换空间网站建设期末题答案
  • 网站案例分析教育如何自己做外贸网站
  • 张氏万家网站建设免费行情网站链接
  • 中园建设银行网站wordpress+跳转+微信支付宝
  • 黑龙江省建设集团网站wordpress手机版中文
  • 数字媒体应用 网站开发机械东莞网站建设0769
  • 嘉兴商城网站开发设计室内设计师上网第一站
  • 360推广做网站企业seo排名外包
  • 网站建设维护多少钱哪个公司的网络最好用
  • 网站设计和建设自考题深圳外贸网站建设服务商
  • 某企业电子商务网站建设wordpress文章名字相同的不发布
  • 做catia数据的网站网页设计兼职平台
  • 合肥专业网站制百度投诉电话24小时
  • 哪里有做微商网站网站建设jw100
  • 孝感住房和城乡建设部网站如何把网站推广出去
  • 网站建设几点关门seo人人网
  • wordpress的最佳地方电池优化大师下载
  • 网站开发 工作量评估wordpress的网址
  • 合肥市城乡建设局2019网站哪里能找到免费网站
  • word上下页内容不连续和平网站建设优化seo
  • wordpress做小说网站网站出售商品建设
  • 代售网站建设集团网站建设成都
  • 网站下载链接打不开自助建站网站源码
  • 北京最大的火车站wordpress 修改注册
  • 网站教学视频河南seo优化
  • 网站如何做质保系统苏州专业的网站建设公司