> For the complete documentation index, see [llms.txt](/llms.txt)

# SDK

GS2-SDK의 초기화 방법에 대해



SDK를 초기화하려면 Credential, Session이라는 객체를 생성해야 합니다.

## Credential

GS2의 API 키를 표현하는 객체입니다.
`BasicGs2Credential`이라는 클래스가 정의되어 있으며, clientId / clientSecret을 사용하여 API를 이용할 때는 이 클래스를 사용합니다.

### BasicGs2Credential 파라미터

| 인자명 | 설명 |
| ----- | --- |
| clientId | 클라이언트ID |
| clientSecret | 클라이언트시크릿 |

## Session

Session에는 HTTP 통신을 이용하는 `Gs2RestSession`과 WebSocket 통신을 이용하는 `Gs2WebSocketSession`의 두 가지 종류가 있습니다.
프로그래밍 언어에 따라서는 `Gs2WebSocketSession`이 지원되지 않는 경우가 있으며, 또한 페이로드가 커지는 요청에는 사용할 수 없는 제약이 있습니다.
따라서 서버로부터의 푸시 알림이 필요하지 않은 경우에는 원칙적으로 `Gs2RestSession`을 이용해 주십시오.

### Gs2RestSession Request

| 인자명 | 설명 |
| ----- | --- |
| credential | Credential 객체 |
| region | 접속 대상 GS2 리전 |

### Gs2WebSocketSession Request

| 인자명 | 설명 |
| ----- | --- |
| credential | Credential 객체 |
| region | 접속 대상 GS2 리전 |

### 초기화

생성한 Session 객체는 사용하기 전에 접속 처리가 필요합니다.

세션 객체에는 접속 API가 마련되어 있으며, 이를 호출함으로써 접속을 실행할 수 있습니다.




**Go**
```go

    session := core.Gs2RestSession{
        Credential: &core.BasicGs2Credential{
            ClientId: "your client id",
            ClientSecret: "your client secret",
        },
        Region: core.ApNortheast1,
    }

    if err := session.Connect(); err != nil {
        panic("error occurred")
    }
```

**PHP**
```php

    $session = new Gs2RestSession(
        new BasicGs2Credential(
            "your client id",
            "your client secret"
        ),
        Region::AP_NORTHEAST_1
    );

    $session->open();
```

**Java**
```java

    Gs2RestSession session = new Gs2RestSession(
        Region.AP_NORTHEAST_1,
        new BasicGs2Credential(
            "your client id",
            "your client secret"
        )
    );
    session.connect();
```

**C#**
```csharp

    var session = new Gs2RestSession(
        new BasicGs2Credential(
            "your client id",
            "your client secret"
        ),
        Region.ApNortheast1
    );
    yield return session.Open();
```

**TypeScript**
```typescript

    const session = new Gs2Core.Gs2RestSession(
        "ap-northeast-1",
        new BasicGs2Credential(
            "your client id",
            "your client secret"
        )
    );
    await session.connect();
```

**Python**
```python

    session = core.Gs2RestSession(
        core.BasicGs2Credential(
            "your client id",
            "your client secret"
        ),
        "ap-northeast-1",
    )
    session.connect()
```


#### 카오스 모드

카오스 모드를 적용한 SDK 초기화 처리를 호출함으로써 API 요청을 일정한 확률로 실패시킬 수 있습니다.
카오스 모드를 활성화한 클라이언트를 사용하여 개발을 진행함으로써 에러 핸들링을 더욱 견고하게 만들 수 있습니다.




**C#**
```csharp

    var session = new ChaosGs2RestSession(
        new BasicGs2Credential(
            "your client id",
            "your client secret"
        ),
        0.1f, // API 요청 시 10%의 확률로 재시도가 필요한 에러를 발생시킴
        Region.ApNortheast1
    );
    yield return session.Open();
```



## 마이크로서비스의 클라이언트

GS2가 제공하는 각 마이크로서비스마다 클라이언트가 마련되어 있습니다.
마이크로서비스의 클라이언트에도 `Gs2AccountRestClient`와 `Gs2AccountWebSocketClient`처럼 통신 프로토콜별 클라이언트가 마련되어 있으며, 각각 `Gs2RestSession`과 `Gs2WebSocketSession`을 필요로 합니다.

### Gs2AccountRestClient Request

| 인자명 | 설명 |
| ----- | --- |
| session | Gs2RestSession |

### Gs2AccountWebSocketClient Request

| 인자명 | 설명 |
| ----- | --- |
| session | Gs2WebSocketSession |

### 구현 예제




**Go**
```go

client := account.Gs2AccountRestClient{
    Session: &session,
}
```

**PHP**
```php

$client = new Gs2AccountRestClient($session);

```

**Java**
```java

Gs2AccountRestClient client = new Gs2AccountRestClient(session);

```

**C#**
```csharp

var client = new Gs2AccountRestClient(session);
```

**TypeScript**
```typescript

const client = new Gs2Account.Gs2AccountRestClient(session);

```

**Python**
```python

client = account.Gs2AccountRestClient(session)

```





