
后端Web框架【免费下载链接】eveREST API framework designed for human beings项目地址https://gitcode.com/gh_mirrors/ev/eve点击查看免费下载导读Eve 是一个为人类设计的 REST API 框架其核心魅力之一在于可插拔的架构框架本身只负责路由、认证、校验与渲染数据存取通过统一的DataLayer接口交给不同后端实现。本文以仓库 docs/extensions.rst 中官方维护的扩展注册表为主线逐一解读 Eve 生态中经官方认可的数据后端类、认证安全类、开发工具类扩展并结合 eve/flaskapp.py、eve/io/base.py、eve/auth.py 等源码说明这些扩展的挂载原理。读完本文你将掌握Eve 扩展的接入点在哪里、每类扩展解决什么问题、如何为不同后端SQL、Elasticsearch、Neo4j、Mongoengine选择合适的数据层以及如何让自有工具进入官方扩展注册表。为什么 Eve 能生长出如此丰富的扩展生态Eve 本身是构建在 Flask 之上的 REST API 框架它的设计刻意把数据怎么存与API 怎么暴露解耦。打开 eve/io/base.py 可以看到框架定义了一个DataLayer基类它声明了数据层必须实现的最小接口find、find_one、find_one_raw、insert、update、replace、remove、aggregate、combine_queries等。基类本身就是一份接口契约任何后端只要实现这套方法就能无缝接入 Eve——正如源码注释所说Admittedly, this interface is a Mongo rip-off默认的 MongoDB 实现 eve/io/mongo/mongo.py 就是这套接口最完整的参考样例。数据层的挂载点在 eve/flaskapp.pyEve应用构造函数的data参数接收一个DataLayer子类默认值是Mongo构造时self.data data(self)完成驱动初始化后续所有资源读写都通过self.data转发。同理validator参数接收 Cerberus 校验器的子类auth参数接收 eve/auth.py 中BasicAuth/HMACAuth/TokenAuth的子类。这意味着换后端不用改业务代码只要替换data参数指向的类认证逻辑通过子类化内建认证基类即可接入扩展可以完全复用 Eve 的资源配置、校验、渲染、HATEOAS 与分页等基础设施。这一设计正是文档 docs/extensions.rst 中众多第三方包的生长土壤。数据后端类扩展把 Eve 接到任何存储上Eve-SQLAlchemy让 Eve 与 SQL 数据库协同工作由 Andrew Mleczko 等人开发的 Eve-SQLAlchemy是注册表中与默认 MongoDB 后端最互补的一个。官方文档的描述是Powered by Eve, SQLAlchemy and good intentions它让开发者effortlessly build and deploy highly customizable, fully featured RESTful Web Services with SQL-based backends。从实现原理看它正是走DataLayer子类的路线将 SQLAlchemy ORM 模型映射为 Eve 资源定义实现insert/update/replace/remove时把 Eve 的查询表达式翻译成 SQL 查询。由于 eve/flaskapp.py 在 0.2 版本就加入了Eve.register_resource()方法用于simpler initialization API of all ORM/ODM extensionsSQLAlchemy 扩展可以在Eve对象初始化后动态注册资源这也是它能够无缝工作的关键便利。适用场景已有 SQL 数据库、希望保持 ORM 建模习惯同时获得 Eve 的认证、校验、过滤、分页、HATEOAS 等全套 REST 能力。Eve-Elastic把 Elasticsearch 变成 Eve 的检索后端由 Petr Jašek 开发的 Eve-Elastic 是 Elasticsearch 的 Eve 数据层文档特别强调两个特性facets 支持与schema 映射生成Features facets support and the generation of mapping for schema。facet 是 Elasticsearch 的聚合分组能力适合做电商类目、日志分布等统计场景而 schema 映射生成意味着你只需维护一份 Cerberus schemaEve 的标准 schema 格式扩展会基于它自动生成 Elasticsearch 的 index mapping无需手工维护两份定义。同样地它实现DataLayer的查询接口把 Eve 的where表达式转换为 Elasticsearch query DSL。适用场景全文检索、日志分析、大数据量聚合查询等需要 Elasticsearch 能力的 API。Eve-Mongoengine用 Mongoengine ORM 模型直接当 schema由 Stanislav Heller 开发的 Eve-Mongoengine 解决了一个很实际的重复劳动问题如果你在应用里已经用 Mongoengine 定义了 ORM 模型又要用 Eve 写一遍 Cerberus 格式的 schema就违背了 DRY 原则。这个扩展takes your mongoengine models and auto-transforms them into Cerberus schema under the hood——在底层自动把 Mongoengine 模型转换为 Cerberus schema你不需要再写第二份 schema 定义。这种模型即 schema的思路与 Eve 的校验管线是天然衔接的Eve 的Validator见 eve/io/mongo/validation.py 和 eve/validation.py消费的就是 Cerberus schema因此转换后的 schema 直接进入请求体校验流程保持 Eve 一贯的 422 校验错误返回格式。适用场景已经重度使用 Mongoengine 建模、希望避免 schema 双份维护的项目。Eve-Neo4j用图数据库构建高度可定制的 REST 服务由 Abraxas Biosystems 开发的 Eve-Neo4j目标是enable its users to build and deploy highly customizable, fully featured RESTful Web Services using Neo4j as backend底层组合是 Powered by Eve, Py2neo, flask-neo4j and good intentions。它的核心是把 Eve 的资源模型映射到图数据库的节点与关系使关系型建模社交网络、知识图谱、推荐系统等能直接暴露为 REST API。同样通过DataLayer接口接入因此路由、认证、校验、分页等 Eve 能力对图数据同样生效。适合需要关系查询深度的场景且希望 API 层与图存储层解耦。认证与安全类扩展用标准协议保护你的 APIEve-Auth-JWTOAuth 2 JWT 令牌校验由 Olivier PoitreyEve 的长期贡献者开发的 Eve-Auth-JWT 是一个 OAuth 2 JWT 令牌校验模块。它在 eve/auth.py 的认证基类体系之上工作Eve 的BasicAuth基类定义了check_auth()与authorized()两个钩子其中authorized()负责从请求中提取凭证request.authorizationcheck_auth()则由子类实现具体的校验逻辑默认抛NotImplementedError。Eve-Auth-JWT 正是通过子类化该基类、在check_auth()中完成 JWT 签名与声明校验从而让 API 端点接受 Bearer Token 形式的 OAuth 2 JWT。配合 eve/flaskapp.py 中auth参数的处理逻辑可传实例或可调用对象以及 eve/auth.py 中requires_auth装饰器对resource/item端点认证配置的读取JWT 扩展可以精确控制哪些端点需要鉴权、允许哪些角色。Eve-OAuth2 与 Flask-Sentinel用授权码流程保护端点由 Nicola Iarocci 提供的 Eve-OAuth2 严格来说不是扩展本身而是一个范例官方文档明确说它is not an extension per-se, but rather an example of how you can leverage Flask-Sentinel to protect your API endpoints with OAuth2。Flask-Sentinel 是同一作者维护的 OAuth2 授权服务器Eve-OAuth2 展示了如何用它对 API 端点进行 OAuth2 保护。这个组合的工程意义在于你可以部署一套完整的 OAuth2 授权码流程授权端点、令牌端点、刷新令牌然后让 Eve API 校验访问令牌。令牌校验逻辑依然落在认证基类的check_auth()钩子里与 Eve 的角色控制allowed_roles、allowed_read_roles、allowed_write_roles等配置见 eve/default_settings.py结合使用。开发工具类扩展测试、监控、文档与脚手架Eve-Mocker单元测试中的 API 模拟工具由 Thomas Sileo 开发的 Eve-Mocker 是一个面向 Eve REST API 的模拟mocking工具底层基于 HTTPretty定位是aimed to be used in your unit tests, when you rely on an Eve API——当你的测试代码依赖一个 Eve API 时可以用它模拟 API 响应让测试无需真实启动服务即可运行。该项目曾在 Eve 官方博客上被专题介绍Mocking tool for Eve APIs。对于测试驱动开发它意味着下游服务测试可以稳定、离线地模拟 Eve API 的各种响应成功、校验错误 422、鉴权 401 等与仓库中 tests/ 目录所体现的测试体系配合使用。Eve-Healthcheck为监控提供健康检查端点由 LuisComS 开发的 Eve-Healthcheck 是一个提供健康检查 URL 的项目用于监控你的 Eve 应用servers healthcheck urls used to monitor your Eve application。在微服务与容器化部署Kubernetes liveness/readiness probe、负载均衡健康检查场景下一个标准化的健康检查端点能直接接入现有监控体系。它与 eve/default_settings.py 中内置的STANDARD_ERRORS、DEBUG等运行时配置协同帮助运维快速判断服务是否存活。EveGenie一键生成 Eve schema 脚手架由 Erin Corson 和 Matt Tucker 编写、David Zisky 维护的 EveGenie 是 schema 生成工具It accepts a json document of one or more resources and provides you with a starting schema definition。你只需要提供一个或多个资源的 JSON 示例文档它就能产出一份可用的起始 Cerberus schema 定义。这与 Eve 的 schema 驱动设计一脉相承——Eve 的每个资源在DOMAIN配置中都有对应的 schema字段、类型、约束schema 一旦就绪资源的端点、校验、过滤、排序便自动生效。EveGenie 的价值在于把从数据结构反推 schema的重复工作自动化尤其适合快速原型与 API 先行API-first的开发流程。Eve-Swagger让 API 自带交互式文档由 Nicola Iarocci 开发的 Eve-Swagger 是 swagger.io 的 Eve 扩展。文档引用了 Swagger 官网的定位说明Swagger is a simple yet powerful representation of your RESTful API. With the largest ecosystem of API tooling on the planet, thousands of developers are supporting Swagger in almost every modern programming language and deployment environment. With a Swagger-enabled API, you get interactive documentation, client SDK generation and discoverability.即 Swagger 是 RESTful API 的一种简单而强大的表示形式拥有庞大的 API 工具生态启用 Swagger 的 API 可以获得交互式文档、客户端 SDK 生成与可发现性三大收益。它还会基于 Eve 的DOMAIN配置与 schema 自动生成 OpenAPI 描述无需手工维护文档。仓库中 docs/rest_api_for_humans.rst 等文档也体现了 Eve 一贯重视面向人类的 API体验的理念。客户端与跨语言让 Eve API 触达更多平台Eve.NET.NET 平台上的 Eve 客户端由 Eve 框架作者 Nicola Iarocci 亲自编写维护的 Eve.NET 是一个面向 Eve 服务的 HTTP/REST 客户端It leverages bothSystem.Net.HttpClientandJson.NETto provide the best possible Eve experience on the .NET platform。它作为可移植类库PCL交付可以运行在 .NET4、Mono、Xamarin.iOS、Xamarin.Android、Windows Phone 8 和 Windows 8 等平台上作者团队内部用它支撑 iOS、Web 与 Windows 应用。由于是同一作者维护它天然理解 Eve 的响应约定——_items、_links、_meta等 HATEOAS 字段见 eve/default_settings.py客户端可以直接消费分页、排序与链接导航减少胶水代码。REST Layer for GolangGo 世界里的Eve 精神如果你转向 Go 生态官方注册表也收录了由 Olivier Poitrey 开发的 REST Layer。官方文档引用其自我定位a REST API framework heavily inspired by the excellent Python Eve. It lets you automatically generate a comprehensive, customizable, and secure REST API on top of any backend storage with no boiler plate code. You can focus on your business logic now.即这是一个深受优秀的 Python Eve 启发的 REST API 框架能在任何后端存储之上自动生成全面、可定制且安全的 REST API无需样板代码让开发者专注于业务逻辑。它是 Eve 设计哲学声明式资源、自动 CRUD、认证/授权、少样板代码在 Go 语言中的延续。让更多扩展进入官方注册表文档 docs/extensions.rst 的定位是Eve extensions registry扩展注册表这是一份人工审核、定期更新的清单This list is moderated and updated on a regular basis。如果你为 Eve 编写了包并希望出现在清单中只需要联系维护者并展示你的工具官方给出的联系方式是维护者的邮件见文档末尾的get in touch链接定义。这个流程本身透露了生态的运营方式注册表不是自动抓取而是维护者把关确保列出的扩展质量与活跃度有基本保障。因此把自研模块做成独立的、可pip install的包围绕DataLayer/ 认证基类等公开接口实现是进入官方清单的前提。从源码看扩展接入的三条主线综合以上全部扩展Eve 生态的扩展点可以归纳为三条主线它们都能在仓库源码中找到对应锚点数据层扩展子类化 eve/io/base.py 中的DataLayer实现find/insert/update/replace/remove等方法然后通过Eve(dataMyDataLayer)接入。Eve-SQLAlchemy、Eve-Elastic、Eve-Neo4j、Eve-Mongoengine 都属于这一类。默认的 MongoDB 实现 eve/io/mongo/mongo.py 是最完整的参考模板。认证扩展子类化 eve/auth.py 中的BasicAuth或HMACAuth、TokenAuth实现check_auth()通过Eve(authMyAuth)或资源级authentication配置接入。Eve-Auth-JWT、Eve-OAuth2/Flask-Sentinel 属于这一类。工具/客户端扩展以第三方包形式提供独立能力schema 生成、模拟测试、健康检查、文档、跨语言客户端围绕 Eve 的 schema、响应格式与接口约定工作。EveGenie、Eve-Mocker、Eve-Healthcheck、Eve-Swagger、Eve.NET 属于这一类。选型建议需要 SQL 事务与既有 ORM 资产选 Eve-SQLAlchemy需要全文检索与聚合选 Eve-Elastic深度使用 Mongoengine 建模选 Eve-Mongoengine关系/图模型优先选 Eve-Neo4j标准 OAuth2 接入优先参考 Eve-OAuth2 Flask-SentinelAPI 对外可发现性优先加装 Eve-Swagger。每个扩展都复用 Eve 的认证、校验、过滤、分页、HATEOAS 与版本控制等通用设施这正是 Eve 面向人类设计哲学的生态化体现。赞分享后端Web框架【免费下载链接】eveREST API framework designed for human beings项目地址https://gitcode.com/gh_mirrors/ev/eve点击查看免费下载相关推荐Peewee Playhouse 扩展库完全指南从 SQLite 增强、PostgreSQL 扩展到底层数据库工具的全景解析Peewee Playhouse 扩展库完全指南从 SQLite 增强、PostgreSQL 扩展到底层数据库工具的全景解析 Peewee 除了核心的 ORM后端ORM数据库HslControlsDemo跨平台应用Windows与Android端工业界面开发对比HslControlsDemo跨平台应用Windows与Android端工业界面开发对比 HslControlsDemo是HslControls控件库的使用示示例工程Blender角色表情系统形态键与骨骼驱动的工程化实现策略Blender角色表情系统形态键与骨骼驱动的工程化实现策略 在数字角色动画制作领域Blender作为开源3D创作软件的标杆其表情系统架构展现出了卓越的技术图形学3D渲染桌面应用音视频上一篇PyTorch FSDP 高级实战使用 Fully Sharded Data Parallel 微调 T5 文本摘要模型下一篇IPTVnator EPG 节目指南加一个源直播和回看都排在同一条时间轴上创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考