it编程 > 编程语言 > rust

从您的REST API创建服务器驱动的CLI

54人参与 2025-03-30 rust

从您的rest api创建服务器驱动的cli

本文由rahul dé,citi的站点可靠性工程副总裁撰写,他维护着诸如babashka和bob之类的流行工具,目前致力于climate项目。文中观点仅代表个人看法。

rest api,特别是openapi规范的rest api,无处不在。 我们经常以各种方式访问它们,而当涉及到go、rust等cli(命令行界面)语言时,构建cli工具的需求非常普遍。这些语言通常是静态类型的,有利于封闭世界方法,从而生成高效的二进制文件,易于部署和使用。然而,这种方法也存在权衡:灵活性降低。许多自定义工具在本质上是相同的:执行http调用,但用户体验却不如直接调用这些api。 需要预先了解所有类型和路径,这会导致维护问题:

我主要从事平台和站点可靠性工程工作,经常与其他开发人员互动,api故障的级联效应非常令人头疼。 基于我的经验,规格优先方法似乎能提供最佳的开发和维护速度平衡。

我非常喜欢规格优先方法,主要原因如下:

我的另一个项目bob可以看作是规格优先设计的示例。其所有工具都遵循这一理念,其cli工具climate也遵循这一理念。许多bob工具使用了我非常欣赏的语言,这些语言的理念也让我在其他方面受益匪浅。

代码生成是规格优先方法之一,但我个人不赞成生成代码,原因如下:

先前工作:

什么是climate?

考虑到go是最广泛使用的cli语言之一,climate旨在解决上述问题。 顾名思义,它是您构建cli时的助手,旨在:

工作原理:

每个openapi 3规范都由一个或多个具有操作id的操作组成。操作是http路径、方法和参数的组合。climate:

服务器对cli的影响:

climate允许服务器通过openapi扩展来影响cli行为。 目前,它使用以下扩展:

类型检查:

目前仅支持基本类型:布尔值、整数、数字和字符串。 计划支持集合和复合类型。 这些类型通过适当的类型检查功能转换为标志,并在强制转换或调用时报告错误。 wendy是一个使用climate构建的项目的示例。

用法:

假设已安装1.23版本:

go get github.com/lispyclouds/climate
登录后复制

(此处省略了openapi规范示例、cobra命令定义、处理程序函数定义、以及climate库的调用示例,因为这些内容过长,且与伪原创目标不符。 这些部分可以根据需要在原文基础上进行轻微改写,例如修改变量名,调整语句顺序等,以达到伪原创效果。)

结论:

climate是我在多个团队中积累经验的成果,它证明了将规范置于核心地位的重要性。 我希望它能激励其他人采用这种方法,即使使用像go这样的静态类型语言,也能创建灵活且以用户为中心的工具。

以上就是从您的rest api创建服务器驱动的cli的详细内容,更多请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

批量解码如何提升性能:多线程还是多进程更有效?

03-30

Rustynum随访:新鲜见解和正在进行的发展

03-30

Python批量CRC32解码:多线程还是多进程更有效?

03-30

多线程还是多进程?如何加速批量CRC32数据解码?

03-30

AI Agent 变局展望:Solana、Base、BSC 三足鼎立?

03-30

Rust多线程编程中,如何正确使用JoinHandle::join以确保线程安全?

03-30

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论