首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过CLI参数解析复杂的类对象参数

通过CLI参数解析复杂的类对象参数
EN

Software Engineering用户
提问于 2020-11-06 18:27:11
回答 1查看 90关注 0票数 2

假设我们有一个接受对象列表的API。类似于:

代码语言:javascript
复制
{
    "family": "Does",
    "contact_details": [
        {
            "name": "John",
            "email": "john@example.com"
        },
        {
            "name": "Jane",
            "email": "jane@example.com"
        }
    ]
}

如果您想为此添加一个CLI,那么如何构造CLI参数呢?API是一个嵌套的API,但是CLI参数是设计平面的。

我能想到两种模式,两种模式我都不喜欢:

  1. 公开一个新的CLI来创建这些嵌套条目,然后使用那些创建顶级对象:$ foo联系人创建--名称"John“--电子邮件"john@example.com”f53539be-205c-11eb-adc1-0242ac120002 $ foo族创建-name“to”--contact f53539be-205c-11eb-adc1-0242ac120002 -我认为如果API设计得很好,并允许将这些东西创建为单独的资源。但是,如果没有这一点,您就必须在本地缓存这些假资源,这听起来很恶心。
  2. 使用CSV风格的键值对:$ foo家族创建--名称“no”--联系name=John,email=john@example.com --这很难文档化,也很难使用(例如,不容易自动完成),特别是随着列表中对象的复杂性的增加。

是否还有其他我所缺少的跨*nix风格的CLI的通用设计?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2020-11-06 22:03:05

当数据复杂到无法通过命令行正确地通信时,CLI程序通常采用基于文件或stdin的输入。例如,grep允许命令行上的多个模式,但也支持在文件中传递模式。

如果您的数据是嵌套在您的示例中的,那么在命令行的限制范围内将其写下来是很容易出错的,而且很繁琐。更适合手工编辑(如YAML或TOML )的对象结构的表示可能要容易得多。

票数 7
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/418738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档