小趣味小游戏#2:Starlette


隧道视野


碰巧很多Web应用程序都是用Python编写的。 Python开发的这一利基几乎被两个健康的参与者Django和Flask完全共享。 因此,大量的Python程序员致力于使用这两个框架。


因此,许多Python开发人员具有某种隧道愿景-他们的工程方法被锁定在两个库之间。


一些程序员不仅限于Djano和Flask,还可以在其战斗工具中添加各种新功能。 例如,流行的Sanic框架。


构造转变:从WSGI到ASGI


在Python快速适应Web开发需求的时期,社区提出了WSGI标准-Web服务器网关接口。 该协议描述了Web服务器如何发送HTTP请求以在Python应用程序中进行处理并从那里接收响应。


WSGI为许多Web开发框架和库的开发铺平了道路。 它们的体系结构都不同,但是与外部Web服务器进行通信的方式相同。 WSGI早在2003年就由社区引入,并且所有流行的经典宠物驱动的Web框架(包括Django和Flask)仍然支持它。


在Python核心中出现了用于异步执行代码和协程的强大工具之后, WSGI的问题就开始了。 WSGI是古老的,根本不专注于使用新的语言功能。 因此,需要一种新的异步协议来将Web服务器与Python程序进行通信。 于是出现了ASGI (异步服务器网关接口),这是WSGI的意识形态后裔,但具有协程和异步性。


旧框架的开发人员受到听众的束缚-他们根本无法采用框架并将其转移到异步方法(这将破坏代码并破坏兼容性),因此所有使用ASGI进行的开发都集中在最近几年发布的新框架中,并且Django的


Starlette-一个出色的框架



Starlette是一个新的,灵活而酷炫的框架,它实现了ASGI方法。 关于它的所有内容都集中在异步和第三Python分支的新芯片上。


此外, Starlette还有很多严肃的东西。


  • GraphQL开箱即用。 是的,这种开发客户端-服务器交互的新方法开始推动REST,并在Web框架领域中取代了它。
  • Web套接字已经内置并且可以使用了。
  • 现成的一套用于授权/身份验证的中间件,CORS。
  • 内置异步任务。

固体乳液-FastAPI



一些Starlette程序员非常喜欢它,并为此框架创建了一个扩展-FastAPI


实际上, FastAPI只是本机Starlette类的一个污点 ,在已经很好的框架中添加了许多新功能。


  • 用于创建REST API服务的包子+方法的Swagger文档。 Starlette专注于时髦的GraphQLFastAPI负责看过REST的用户
  • 基于变量的工具提示类型的便捷小工具。 例如,内置数据验证器。
  • 用于身份验证和身份验证过程的实用工具-支持JWT,OAuth2。

以及一些小型便利设施和便利设施。


在干渣中


现在是时候深入研究ASGI及其框架的世界了(当然,除非您已经这样做了)。 异步解决方案仍远未占领市场,但仍在积极推进。 首先-因为它的速度。

Source: https://habr.com/ru/post/zh-CN454440/


All Articles