SDK 规范 ######## 常见的命名方式:: xxx-sdk-go / xxx-sdk-python / xxx-sdk-java 一个典型的目录结构如下:: ├── examples # 示例代码存放目录 │ └── authz.go ├── README.md # SDK使用文档 ├── sdk # 公共包,封装了SDK配置、API请求、认证等代码 │ ├── client.go │ ├── config.go │ ├── credential.go │ └── ... └── services # API封装 ├── common │ └── model ├── iam # iam服务的API接口 │ ├── authz.go │ ├── client.go │ └── ... └── tms # tms服务的API接口 另一个典型的目录结构:: ├── examples # 存放SDK的使用示例 ├── Makefile # 管理SDK源码,静态代码检查、代码格式化、测试、添加版权信息等 ├── marmotedu │ ├── clientset.go # clientset实现,clientset中包含多个应用,多个服务的API接口 │ ├── fake # clientset的fake实现,主要用于单元测试 │ └── service # 按应用进行分类,存放应用中各服务API接口的具体实现 │ ├── iam # iam应用的API接口实现,包含多个服务 │ │ ├── apiserver # iam应用中,apiserver服务的API接口,包含多个版本 │ │ │ └── v1 # apiserver v1版本API接口 │ │ ├── authz # iam应用中,authz服务的API接口 │ │ │ └── v1 # authz服务v1版本接口 │ │ └── iam_client.go # iam应用的客户端,包含了apiserver和authz 2个服务的客户端 │ └── tms # tms应用的API接口实现 ├── pkg # 存放一些共享包,可对外暴露 ├── rest # HTTP请求的底层实现 ├── third_party # 存放修改过的第三方包,例如:gorequest └── tools └── clientcmd # 一些函数用来帮助创建rest.Config配置