首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用 AWS Smithy 构建下一代 API 服务

日常工作中,大家使用得比较多的代码生成工具有 gRPC(或者其衍生的一系列 xRPC),用于把微服务的描述生成不同语言的代码。...目前主流使用的 API 定义规范是 OpenAPI。虽然 OpenAPI 也提供了相应的代码生成器,可以根据 spec 生成代码,但其生成的代码质量实在不敢令人恭维。...虽然在定义良好的 OpenAPI spec 上它工作得很好,但 OpenAPI 以及其底层的 JSON Schema 毕竟不是为了数据建模而设计的,这就导致代码生成器无论怎么处理,都会陷入各种问题,只能疲于奔命地打补丁...使用像 smithy 这样的代码生成工具可以显著降低维护的难度。 成本是最主要的考量,其次便是建模的规范性。好的建模工具带有从长期的工程经验中累计的必要的约束性,让你可以在最佳实践的条条框框中思考。...使用 Smithy 生成的客户端代码 所有代码生成器,减轻的最大的负担是客户端代码。

75610

【REST架构】OData、JsonAPI、GraphQL 有什么区别?

问题: 我在职业生涯中使用过很多 OData,现在我来自不同团队的同事中很少有人建议我们迁移到 JsonAPI 和 GraphQL,因为它与 Microsoft 无关。...它在 React 爱好者中很受欢迎,主要与 React 或 Vue.js 结合使用。与 GraphQL 类似的是 Falcor,它也相对较新。...这种新模型更适合开发人员使用,但它相对于 REST 的优势是值得商榷的。鉴于其年轻,生态系统尚未成熟。 为了清楚和完整起见,我将 OpenAPI 包括在列表中,尽管它并不完全是 API 规范。...OpenAPI 标准是一种与语言无关的标准,用于描述和定义 API。例如,您的 API 可以遵循上述标准之一(不包括 GraphQL),也可以使用 OpenAPI 3 进行记录。...大多数编程语言都有实现,以及许多其他工具,如 Web UI 生成器等。 使用 OpenAPI 等规范获得的最好的东西是围绕它们的工具——API 文档页面的生成器、客户端 SDK 代码的生成器等。

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OpenAPI 文档代码生成工具

    主流 OpenAPI 代码生成工具 以下是几款流行的 OpenAPI 代码生成工具的简要介绍: OpenAPI Generator OpenAPI 生成器允许在给定 OpenAPI 规范(支持 2.0...SDK(使用 OpenAPI(以前称为 Swagger)规范定义)来简化您的构建过程,以便您的团队可以更好地专注于 API 的实施和采用。...AutoRest 的输入是使用 OpenAPI 规范格式描述 REST API 的规范。 特点: 与 Microsoft Azure 深度集成,专注于客户端代码生成。...选择 OpenAPI 代码生成工具时,可以从以下几个方面入手: 语言支持: 根据项目使用的编程语言选择支持相应语言的工具。...自定义需求: 如果需要高度定制的代码输出,优先考虑 OpenAPI Generator。 生态系统: 使用 Azure 或其他特定平台时,优先选择与平台集成度高的工具(如 AutoRest)。

    198107

    再见了,Swagger:那么.NET 9如何重新定义API文档?

    多年来一直包含在Web API模板中的广泛使用的API文档工具Swagger,将从.NET 9的初始Web API模板中移除。开发者将需要调整他们描述和可视化API端点的方式。...使用Scalar和其他OpenAPI工具 Scalar及其他OpenAPI工具提供了强大的功能,用于创建和交互OpenAPI标准。...构建自定义文档界面 使用Microsoft.AspNetCore.OpenApi,开发者可以创建一个完全符合自身需求的文档界面。OpenApi库提供了对外观和功能的完全控制,适合需要高度定制的场景。...可考虑OpenAPI、NSwag或自定义解决方案,选择最适合团队需求的工具。 总结 在.NET 9中默认模板移除Swagger标志着整个.NET生态系统中API文档最佳实践的转变。...通过为项目选择最佳解决方案(如NSwag、Swashbuckle或自定义界面),你仍然可以在.NET 9中提供清晰、直观的API文档。

    12000

    迭代器和生成器

    在 JavaScript 中,任何具有 next() 方法的对象都被视为迭代器,该方法返回一个具有值(当前迭代器值)和完成(指示序列结束的标志)的结构。...生成器的主要细微差别也很明显:生成器函数中的代码不会同步执行。...next作为相应迭代器上方法调用的结果,生成器代码的执行是增量发生的。让我们使用前面的示例检查生成器代码是如何执行的。我们将使用一个特殊的光标来标记生成器暂停执行的位置。...naturalRowIterator.next() // 2 naturalRowIterator.next(true) // 1 naturalRowIterator.next() // 2 很清楚如何在自定义迭代器中处理这样的参数...在下一篇文章中,我想讨论如何使用生成器来构建异步进程(协同程序、goroutines、CSP 等)。

    16320

    6款国内外好用的API文档工具介绍

    它使用类似于Markdown的描述语言,并且在API创建过程中遵循设计优先原则的情况下表现出色。 尽管所有这些选项都能正常工作,但OpenAPI格式在过去几年中获得了最大的发展。...2.自动生成API文档– SwaggerHub使用户可以在设计过程中自动生成交互式API文档。 3.优化协作流程–权限和用户角色,实时评论,问题跟踪和团队管理工具。...使用ReDoc,企业可以快速在线发布美观的交互式API文档。 它的优势在于: 1.灵活性强– ReDoc可以在您的浏览器中运行,但也可以作为Docker映像,React组件或命令行工具使用。...OpenAPI生成器 OpenAPI Generator是一个易于使用的工具,用于生成OAS 2.0和OAS 3.0文档以及服务器存根和库的文档。...它以相对简单易用(不牺牲功能)和高度可扩展(例如,它支持50多个客户端生成器)而闻名。

    5.9K41

    OpenAPI Initiative:新标准及路线图一览

    从 OpenAPI 描述中,API 生产者可以检查他们的 API 是否合规,为他们的 API 运行自动化测试工具,并发布即时文档。API 消费者也可以使用这些文件来支持他们自己的集成。...许多更改也包含在 OpenAPI 3.0 的更新中,现在版本为 3.0.4。 这些补丁版本中的大多数更改都是 对规范文档中措辞的改进,澄清了许多模棱两可的条款,并添加了示例。...将分页参数添加到 OpenAPI 描述中的所有 GET 端点。...删除所有标记为 deprecated 的操作,或匹配某些其他条件 添加特定于工具的扩展,例如文档工具的显示名称或 SDK 生成器的方法和模块名称。...Spectral 和 Redocly CLI 也已将 Arazzo 支持添加到其 linting 工具中,这对于了解和使用该格式是一个很大的推动作用。

    7010

    FastAPI框架诞生的缘由(下)

    使用这些框架,我们创建了几个 Flask 的全栈生成器。...它没有使用像第三方库(如Pydantic)提供数据验证,序列化和文档,它有自己的库。因此,这些数据类型定义将不太容易重用。 它需要更多详细的配置。...我从未在完整的项目中使用过它,因为它没有安全性集成,因此,我无法用基于 Flask-apispec 的全栈生成器替换我拥有的所有功能。我在项目积压中创建了添加该功能的请求。...然后,FastAPI 会获取该 JSON Schema 数据并将其放入OpenAPI 中,除此之外它还会执行其他所有操作。...您可以将其与 Gunicorn 结合使用,以拥有异步多进程服务器。在“ 部署” 部分中查看更多详细信息。 (完)

    2.4K20

    ⚡什么是 OpenAPI,优势、劣势及示例

    此部分中的模式在规范的某些部分(如路径对象)中使用 \$ref 标签引用。Security: 一个声明授权请求的安全方案类型的对象。安全对象是全局定义的,也可以精确指定去(安全方案覆盖)覆盖。...模式在 API 文档的底部,通常有一个模式部分,对应于 API 定义中组件部分描述的模式。这部分是一个快速参考,当读者需要在API的更广泛上下文中查看一般模式(而不是它们在特定操作中的使用)时。...RAML使用一个类型系统来保存相关属性并促进规范之间的重用。它还支持与 OpenAPI 相同的内置数据类型。OpenAPI 并没有真正的层次结构。你希望从描述你的 API 的层次结构中得到什么?...RAML 具有支持除 REST 之外的其他架构的额外支持,如 RPC 或 SOAP,只要它们使用 HTTP 协议。RAML 的灵活性允许你将其用于除 REST 之外的架构的文档工具。...一旦你熟悉了Swagger Petstore,你可以将其他的 API 的规范粘贴到 Swagger 编辑器中,看看它的信息如何在 SwaggerUI 中显示。

    1.2K10

    构建下一代 HTTP API - 架构

    另外,Goldorin 还有两个问题: 使用起来还是比较繁琐的,没有提供一个项目生成器,可以一条命令生成 API 项目 parser / builder / utilities 绑定得太紧,应该拆分开来...在具体落地架构前,我们先来探讨一下使用 Quenya 的大致的开发流程,因为这个开发流程和架构中所做的一些决策息息相关: 前后端工程师和产品经理一起撰写/审核 OpenAPI v3 spec,敲定 API...尽管我们在框架上做了很多公共环节的处理,让开发者只需要撰写 API 接口的 schema 的定义和实现 route action(相当于 handler),但在 UAPI 过去几年的使用过程中我还是看到...Quenya Parser 为了支持 Quenya builder 的各种 generator,我们要把 OpenAPI spec 解析成一个中间状态,供 这些 generator 以及其他工具使用。...既然是 OpenAPI v3 的项目,我们自然就要集成 swagger,来方便 API 开发者和客户端开发者使用 API,因为它几乎是每个项目必备的工作。那为什么不在代码生成的阶段就集成进去呢?

    83020

    C#.NET.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)

    文章地址: https://mp.weixin.qq.com/s/2A02aXxvMxIhQV2WJE7pkg 在 .NET 9 中生成 OpenAPI 文档 文章简介: .NET 9 中的 ASP.NET...这项新功能旨在简化开发工作流程并改进 OpenAPI 定义在 ASP.NET 应用程序中的集成。...OpenAPI 的广泛采用培养了一个丰富的工具和服务生态系统,可以帮助您更有效地构建、测试和记录 API。一些示例包括 Swagger UI、Kiota 客户端库生成器和 Redoc,但还有更多。...文章地址: https://devblogs.microsoft.com/dotnet/dotnet9-openapi/ 使用 .NET 9 的新 NuGet 解析程序显著加快包还原速度 文章简介: 使用...文章简介: 在.NET中,强类型字符串(Strongly typed string)并不是一个官方的概念,是指使用特定的结构来表示某种类型字符串数据的编码实践。

    10910

    C#.NET.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)

    文章地址: https://mp.weixin.qq.com/s/2A02aXxvMxIhQV2WJE7pkg 在 .NET 9 中生成 OpenAPI 文档 文章简介: .NET 9 中的 ASP.NET...这项新功能旨在简化开发工作流程并改进 OpenAPI 定义在 ASP.NET 应用程序中的集成。...OpenAPI 的广泛采用培养了一个丰富的工具和服务生态系统,可以帮助您更有效地构建、测试和记录 API。一些示例包括 Swagger UI、Kiota 客户端库生成器和 Redoc,但还有更多。...文章地址: https://devblogs.microsoft.com/dotnet/dotnet9-openapi/ 使用 .NET 9 的新 NuGet 解析程序显著加快包还原速度 文章简介: 使用...文章简介: 在.NET中,强类型字符串(Strongly typed string)并不是一个官方的概念,是指使用特定的结构来表示某种类型字符串数据的编码实践。

    11110

    Chatgpt-Retrieval-Plugin—GPT AI插件 真正联网的人工智能

    它允许用户通过自然语言提问或表达需求,从数据源(如文件、笔记或电子邮件)中获取最相关的文档片段。企业可以使用该插件通过 ChatGPT 向员工提供其内部文档。...•/delete:该接口允许使用文档的 ID、元数据过滤器或 delete_all 标志从向量数据库中删除一个或多个文档。...、OpenAPI 架构和标志的路由的本地主机测试。...个性化 您可以通过以下方式为您自己的用例个性化检索插件: •替换标志: 将 logo.png[102] 中的图像替换为您自己的标志。...Webhooks 为了保持存储在向量数据库中的文档的实时性,您可以考虑使用工具如 Zapier[133] 或 Make[134] 来配置基于事件或计划的入站 Webhooks 到您的插件的 API。

    96830

    学习 OpenAPI 的一点记录

    ,这没啥特别的;但另一方面,系统中还需要把 Protobuf 接口定义转换成 HTTP 接口定义,并实施地使用 swagger-core 来动态创建 OpenAPI Spec,这就比较好玩了。...1 gRPC 到 HTTP 的协议转换 2 OpenAPI Spec 驱动开发 2.1 Control Plane 中多模块对 OpenAPI Spec 的依赖 2.2 OpenAPI...技术实现上,我们使用了 Vert.x。 在这个过程中,我也学到了很多有意思的内容。...使用 OpenAPI spec 来定义接口,不只是确定了所谓的系统和模块之间的合约(其实合约这一点其实使用任何方式来表述接口都可以做到);它还做到了一点,那就是 “标准化”。...其中参数-g 是可以用来指定某一种生成器。 Swagger UI Swagger UI 大概是这些工具里面我用的最早的,可以比较方便地查看 spec 并个根据它构造请求。

    38920

    Github 火热的 FastAPI 库,站在了这些知名库的肩膀上

    这就是为什么,如官方网站所述: Requests 是有史以来下载次数最多的Python软件包之一 您的使用方式非常简单。...使用这些框架,我们创建了几个 Flask 的全栈生成器。...它没有使用像第三方库(如Pydantic)提供数据验证,序列化和文档,它有自己的库。因此,这些数据类型定义将不太容易重用。 它需要更多详细的配置。...我从未在完整的项目中使用过它,因为它没有安全性集成,因此,我无法用基于 Flask-apispec 的全栈生成器替换我拥有的所有功能。我在项目积压中创建了添加该功能的请求。...然后,FastAPI 会获取该 JSON Schema 数据并将其放入OpenAPI 中,除此之外它还会执行其他所有操作。

    5.3K30

    .NET 源代码自动生成

    前言 在这篇文章中,我们将探索如何使用.NET 5中的新source generator特性,使用MediatR库和CQRS模式自动为系统生成API。...如果希望将消息发送给许多订阅者,则应该使用MediatR中的内置通知功能,但在本例中我们将不使用该功能。...OpenAPI生成API文档 幸运的是是Swashbuckle包含在ASP.NET Core 5的API模板默认情况下,会看到这些类并为我们生成漂亮的OpenAPI (Swagger)文档!...2、SourceGenerator-MediatR-CQRS 这是一个使用源代码生成器的示例应用程序。查看项目文件,以了解该项目如何引用源生成器。...源代码生成器将把生成的代码插入到这些模板中。 CommandAndQueries基于此文件夹中定义的Command和Query,生成器将生成相应的ASP.NET终结点。

    19110
    领券