目前易盾提供了 Java 和 Go 两种语言的 SDK，方便开发者接入使用，本文档将介绍如何使用 SDK 进行接入。

## 接入准备

前往 [易盾控制台](https://dun.163.com/dashboard)，根据业务需求开通相应的服务，获取 `SecretID`、`SecretKey`、`BusinessId` 等信息。

获取路径：易盾控制台 -> 产品（如 AI 内容检测） -> 服务管理 -> 查看产品秘钥，如果有疑问请联系商务经理。

</md-attention>



## 功能特性

### 完善的失败处理

* 接口请求提供同步重试机制，在出现调用失败时，会自动重试指定 region 内的下一个请求节点。
* 接口请求支持熔断降级，在当前时间窗口内，指定 region 的某个节点失败请求次数到达阈值时，会触发熔断，后续请求会自动路由到 region 内的其他可用节点，直到超过熔断时间再对熔断节点探活。

### 丰富的签名算法

内置多种接口签名算法支持，包括 MD5、SHA1、SHA256、SM3。

### 灵活的接口配置：

* HTTP 请求常见配置参数，包括超时时间参数，HTTP 连接池连接数、空闲时间等核心参数。
* 切换请求协议，通过在请求对象中设置 protocol 字段，切换 HTTP/HTTPS 协议，默认 HTTPS。
* 指定 region（默认杭州），根据您服务器的所在地，选择适合的 region，以达到更好的请求效果，支持的 region 列表请咨询商务经理。
* 熔断窗口的常见配置参数，包括窗口大小、熔断时间、错误率阈值、熔断生效的请求数阈值。

## Java SDK

### 准备工作

#### 环境要求

Java 版本要求: 1.8+

> 可以在终端执行 `java -version` 命令查看当前 Java 版本

#### 安装 SDK

1. 开发环境安装并配置好 Maven 管理工具
2. 在项目中添加 Maven 依赖，在 pom.xml 中 `<dependencies>` 标签中添加以下代码：

```html
<dependency>
    <groupId>com.netease.yidun</groupId>
    <artifactId>yidun-java-sdk</artifactId>
    <version>1.3.10</version>
</dependency>
```

> 注意：代码中的版本号可能更新不及时，推荐使用 Maven 仓库中的最新版本

### 常见配置

#### 请求配置

HTTP 请求常见配置参数，包括超时时间、连接池连接数、空闲时间等参数，使用方式参考如下：

```java
ClientProfile clientProfile = AntispamRequester.createDefaultProfile("SecretId", "SecretKey");
// 设置请求超时时间
HttpClientConfig httpClientConfig = clientProfile.getHttpClientConfig();
httpClientConfig.setSocketTimeoutMillis(60000);
```

#### 请求协议

支持 HTTP 和 HTTPS 协议，推荐使用 HTTP 协议，可以通过设置请求对象的 `protocol` 字段切换协议，使用方式参考如下：

```java
ImageV5SyncCheckRequest checkRequest = new ImageV5SyncCheckRequest();
checkRequest.setProtocol(ProtocolEnum.HTTP);
```

#### 重试配置

支持设置请求失败的重试次数，使用方式参考如下：

```java
ClientProfile clientProfile = AntispamRequester.createDefaultProfile("SecretId", "SecretKey");
// 设置重试次数，最大支持 10 次
clientProfile.setMaxRetryCount(2);
```

#### 熔断配置

支持设置熔断的常见配置，包括窗口大小、熔断时间、错误率阈值、熔断生效的请求数阈值等参数，使用方式参考如下：

```java
ClientProfile clientProfile = AntispamRequester.createDefaultProfile("SecretId", "SecretKey");
// 设置熔断时间
FixedWindowBreakStrategy.Config breakerConfig = clientProfile.getBreakerConfig();
breakerConfig.statWindowMillis(300000);
```

### 更新日志
 
详见[更新日志](https://github.com/yidun/yidun-java-sdk/releases)  


## Go SDK

### 准备工作
 
#### 环境要求

Go 版本要求: 1.2+

> 可以在终端执行 `go version` 命令查看当前 Go 版本

#### 安装 SDK

在项目中添加 module 依赖，在 go.mod 文件中添加以下代码。

```go
require github.com/yidun/yidun-golang-sdk v1.0.0
```

> 注意：代码中的版本号可能更新不及时，推荐使用 Github 仓库中的最新版本

### 常见配置

#### 请求配置

HTTP 请求常见配置参数，包括超时时间、连接池连接数、空闲时间等参数，使用方式参考如下：

```go
  credential := auth.NewCredentials("accessKeyId", "accessKeySecret")
  clientProfile := client.NewClientProfile(credential)
  // 设置请求超时时间
  clientProfile.HttpClientConfig.ConnectionKeepAliveMillis = 10000
  crawlerSubmitClient := crawler.NewCrawlerClient(clientProfile)
```

#### 请求协议

支持 HTTP 和 HTTPS 协议，推荐使用 HTTP 协议，可以通过设置请求对象的 `protocol` 字段切换协议，使用方式参考如下：

```go
request := submit.NewCrawlerResourceV3SubmitRequest()
request.SetProtocol(http.ProtocolEnumHTTP)
```

#### 重试配置

支持设置请求失败的重试次数，使用方式参考如下：

```go
credential := auth.NewCredentials("accessKeyId", "accessKeySecret")
clientProfile := client.NewClientProfile(credential)
// 设置重试次数，最大支持 10 次
clientProfile.SetMaxRetryCount(10)
crawlerSubmitClient := crawler.NewCrawlerClient(clientProfile)
```

#### 熔断配置

支持设置熔断的常见配置，包括窗口大小、熔断时间、错误率阈值、熔断生效的请求数阈值等参数，使用方式参考如下：

```go
credential := auth.NewCredentials("accessKeyId", "accessKeySecret")
clientProfile := client.NewClientProfile(credential)
// 设置熔断时间
clientProfile.BreakerConfig.SetStatWindowMillis(10000)
crawlerSubmitClient := crawler.NewCrawlerClient(clientProfile)
```

### 更新日志

详见[更新日志](https://github.com/yidun/yidun-golang-sdk/releases)