2.1.15. 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配置