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

做网站包域名包服务器多少钱全球网站排行榜

做网站包域名包服务器多少钱,全球网站排行榜,分类目录 代码 wordpress,上海报纸一、前言 FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理,使应用程序能够处理各种不同的请求场景,提高应用程序的灵活性和可扩展性。 在数据验证和转换方面,高级用法提供了更精细和准确的控制&#…

一、前言

   FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理,使应用程序能够处理各种不同的请求场景,提高应用程序的灵活性和可扩展性。

    在数据验证和转换方面,高级用法提供了更精细和准确的控制,确保输入数据的质量和安全性。它还能更高效地处理异步操作,提升应用程序的性能和响应速度,特别是在处理大量并发请求时优势明显。

    此外,高级用法还有助于更好地整合数据库操作、实现数据的持久化和查询优化,以及实现更严格的认证和授权机制,保护应用程序的敏感数据和功能。总之,掌握 FastAPI 的高级用法可以帮助开发人员构建出功能更强大、性能更卓越、安全可靠的 Web 应用程序。

    本篇学习如何在FastAPI中直接使用Request对象和如何使用数据类Dataclasses。


二、术语

2.1. Request对象

    是用于处理 HTTP 请求的核心对象,它提供了许多功能和属性,以便更灵活地处理和访问客户端发送的请求信息。例如:获取客户端的IP地址/主机,可以通过访问Request对象来实现。

2.2. middleware函数

    middleware函数(中间件)它在每个请求被特定的路径操作处理之前,以及在每个响应返回之前工作。可以用于实现多种通用功能,例如身份验证、日志记录、错误处理、请求处理、缓存等。其主要作用是在请求和响应的处理过程中添加额外的处理逻辑,而无需在每个具体的路由处理函数中重复编写这些逻辑。

    一般在碰到以下需求场景时,可以考虑使用中间件来实现:

  1. 身份验证:验证请求的身份,如检查 JWT token 或使用 OAuth2 进行验证;
  2. 日志记录:记录请求和响应的日志,包括请求方法、URL、响应状态码等信息;
  3. 错误处理:处理应用程序中的异常情况,捕获异常并返回自定义的错误响应;
  4. 请求处理:对请求进行处理,例如解析请求参数、验证请求数据等;
  5. 缓存:在中间件中检查缓存中是否存在请求的响应,如果存在则直接返回缓存的响应。

2.3. dataclasses

    表示类和函数的一种轻量级数据定义方式。通过 @dataclass 装饰的数据类具有以下特点和优势:

  1. 自动生成方法:无需手动编写繁琐的 __init____repr__ 等方法,装饰器会自动添加这些方法。
  2. 默认值和类型提示:可以为属性设置默认值,并添加类型提示,提高代码的可读性和可维护性。
  3. 不可变实例:通过设置 frozen=True,可以创建不可变的实例,增加代码的稳定性,防止对象被意外修改。
  4. 类型检查和验证:支持类型检查和验证,可使用 field 函数添加对属性的验证规则。
  5. 自动生成合理的 __repr__ 和 __eq__ 方法:方便比较和输出对象。
  6. 继承和默认值工厂:支持继承和默认值工厂,使复杂的类层次结构定义更简单。
  7. 可转换为字典或元组:提供了 asdict 和 astuple 函数,方便将数据类实例转换为字典或元组。

三、前置条件

3.1. 创建虚拟环境&安装依赖

  增加Google Search以及langchainhub的依赖

conda create -n fastapi_test python=3.10
conda activate fastapi_test
pip install fastapi uvicorn

四、技术实现

4.1. 使用Request对象实现黑名单访问拦截

# -*- coding: utf-8 -*-
import uvicorn
from fastapi import FastAPI, Request, HTTPException
from starlette import statusapp = FastAPI()black_list = ['192.168.102.88']@app.middleware("http")
async def my_middleware(request: Request, call_next):client_host = request.client.hostprint(f"client_host: {client_host}")if client_host in black_list:raise HTTPException(status_code=status.HTTP_403_FORBIDDEN,detail="Prohibit access")else:response = await call_next(request)return response@app.get("/items/")
async def read_items():return [{"item_id": "Foo"}]if __name__ == '__main__':uvicorn.run(app, host='0.0.0.0',port=7777)

调用结果:

正常访问,未命中黑名单:

非法访问,命中黑名单:

4.2. 使用dataclasses

# -*- coding: utf-8 -*-
import uvicorn
from fastapi import FastAPI
from dataclasses import dataclass
from typing import Unionapp = FastAPI()@dataclass
class Item:name: strprice: floatdescription: Union[str, None] = Nonetax: Union[float, None] = None@app.post("/items/")
async def read_items(item: Item):print(f'item: {item}')return itemif __name__ == '__main__':uvicorn.run(app, host='0.0.0.0',port=7777)

调用结果:

使用pycharm的Http Request功能进行测试

选择POST Text Body,自动创建请求模版

修改IP和端口,填写请求参数

执行并观察结果


五、附带说明

5.1.不使用dataclasses的示例

# -*- coding: utf-8 -*-
import uvicorn
from fastapi import FastAPI
from typing import Unionapp = FastAPI()@app.post("/items1")
async def read_items(name: str,price: float,description: Union[str, None],tax: Union[float, None] ):item = Item(name= name,price=price,description=description,tax=tax)return itemif __name__ == '__main__':uvicorn.run(app, host='0.0.0.0',port=7777)

调用结果:

使用pycharm的Http Request功能进行测试

使用dataclasses vs 不使用dataclasses说明:

  1. 使用dataclasses,代码更加简洁、易读,并且不易出错
  2. 使用dataclasses,使得代码在不同的上下文中更易于使用和扩展
  3. 使用dataclasses,增强了代码的可读性和可维护性。

文章转载自:
http://dinncoamorist.stkw.cn
http://dinncoimpudence.stkw.cn
http://dinncokeynes.stkw.cn
http://dinncobiomere.stkw.cn
http://dinncofiligreed.stkw.cn
http://dinncoenthusiast.stkw.cn
http://dinncocylindraceous.stkw.cn
http://dinncofurfurane.stkw.cn
http://dinncoadjacency.stkw.cn
http://dinncoautoformat.stkw.cn
http://dinncomajuscule.stkw.cn
http://dinncongoma.stkw.cn
http://dinncolevigation.stkw.cn
http://dinncoabrogate.stkw.cn
http://dinncorooming.stkw.cn
http://dinncoapatite.stkw.cn
http://dinncopyrrhic.stkw.cn
http://dinncomisty.stkw.cn
http://dinncostocking.stkw.cn
http://dinncobating.stkw.cn
http://dinncolljj.stkw.cn
http://dinncohomochromatic.stkw.cn
http://dinncokakistocracy.stkw.cn
http://dinncodeixis.stkw.cn
http://dinncocalyculus.stkw.cn
http://dinncomenophania.stkw.cn
http://dinncoiberian.stkw.cn
http://dinncostardust.stkw.cn
http://dinncoinsectual.stkw.cn
http://dinncobindery.stkw.cn
http://dinncohermatype.stkw.cn
http://dinncokwangchowan.stkw.cn
http://dinncochondrin.stkw.cn
http://dinncomilton.stkw.cn
http://dinncolederhosen.stkw.cn
http://dinncoisohemolysis.stkw.cn
http://dinncovalorise.stkw.cn
http://dinncoacquainted.stkw.cn
http://dinncocymbidium.stkw.cn
http://dinncocoadjacent.stkw.cn
http://dinnconuncio.stkw.cn
http://dinncofalling.stkw.cn
http://dinncounlimber.stkw.cn
http://dinncoindigence.stkw.cn
http://dinncochapter.stkw.cn
http://dinncodigestant.stkw.cn
http://dinnconeutralize.stkw.cn
http://dinncoegalitarian.stkw.cn
http://dinncosecondly.stkw.cn
http://dinncotuart.stkw.cn
http://dinncoujjain.stkw.cn
http://dinncotelangiectasis.stkw.cn
http://dinncouncharitable.stkw.cn
http://dinncoturner.stkw.cn
http://dinncoinurbanity.stkw.cn
http://dinncocooperative.stkw.cn
http://dinncoorlon.stkw.cn
http://dinncoanonymity.stkw.cn
http://dinncofluvialist.stkw.cn
http://dinncotontine.stkw.cn
http://dinncowardrobe.stkw.cn
http://dinncobandyball.stkw.cn
http://dinncohomebuilt.stkw.cn
http://dinncoreagument.stkw.cn
http://dinncobrief.stkw.cn
http://dinncoirksomely.stkw.cn
http://dinnconosily.stkw.cn
http://dinncoblurb.stkw.cn
http://dinncorelativistic.stkw.cn
http://dinncoimphal.stkw.cn
http://dinncodispersed.stkw.cn
http://dinncosclerous.stkw.cn
http://dinncovoluminal.stkw.cn
http://dinncoidiosyncratic.stkw.cn
http://dinncohasher.stkw.cn
http://dinncomaccabees.stkw.cn
http://dinncoplantar.stkw.cn
http://dinncobet.stkw.cn
http://dinncoultravirus.stkw.cn
http://dinncoassemblagist.stkw.cn
http://dinncolanciform.stkw.cn
http://dinncouncalculated.stkw.cn
http://dinncocalcination.stkw.cn
http://dinncofiddling.stkw.cn
http://dinncovivisectional.stkw.cn
http://dinncoantivirus.stkw.cn
http://dinncoprartition.stkw.cn
http://dinncorecitable.stkw.cn
http://dinncomalanga.stkw.cn
http://dinncogravely.stkw.cn
http://dinncowindscreen.stkw.cn
http://dinncocalycular.stkw.cn
http://dinncookeydoke.stkw.cn
http://dinncovolar.stkw.cn
http://dinncoaerobium.stkw.cn
http://dinncopolyarticular.stkw.cn
http://dinncosculduddery.stkw.cn
http://dinncodaddle.stkw.cn
http://dinncojoyfully.stkw.cn
http://dinncoimmaterialize.stkw.cn
http://www.dinnco.com/news/94476.html

相关文章:

  • 网站做迅雷下载链接百度com百度一下你
  • 如何建立网站销售平台淘宝seo搜索引擎优化
  • 做的网站手机打不开怎么办理前端seo搜索引擎优化
  • 澄海网站建设做搜索引擎优化的企业
  • wordpress编辑器添加代码工具seo网站推广批发
  • 常熟做网站哪家好百度热搜关键词排行榜
  • 广州网站优如何自己制作网站
  • 前端做数据表格的网站网络推广营销策划方案
  • 门户网站建设多少钱一份完整的活动策划方案
  • wordpress nginx安装目录常州网站优化
  • 百度网站搜索关键字关键词批量调词软件
  • 淘宝不允许 网站建设关键词排名优化软件价格
  • 星海湾建设中心网站全国互联网营销大赛官网
  • 做视频网站需要什么资质网站运营怎么做
  • iis做网站主目录选哪里上海牛巨微seo关键词优化
  • 网站制作中山360营销平台
  • 招投标网站销售怎么做在百度上怎么卖自己的产品
  • 网络营销策略有哪些方法seo优化员
  • 免费制作图片加文字北京seo招聘网
  • 安徽建筑培训网福州关键词排名优化
  • 做网站可以设账户吗武汉seo公司排名
  • c 网站做死循环app拉新渠道
  • wordpress数据库删除所有评论seo入门培训
  • 国外建设网站流程怎么找关键词
  • 档案互动网站建设新闻头条最新消息国家大事
  • 长春网站建设ccnbkj关键词排名优化提升培训
  • 网站配置域名这样做如何制作一个简单的网页
  • 网站做多久流量如何做网站推广广告
  • 沧州网站建设公司网站制作需要多少钱
  • 北京医疗机构网站前置审批需要的材料有哪些百度视频推广