# Cloud Code API の呼び出し

> Invoke module endpoints using HTTP requests to the Cloud Code REST API.

Cloud Code API を呼び出して、モジュールエンドポイントを実行します。詳細については、[Cloud Code API のドキュメント](https://services.docs.unity.com/cloud-code/v1/index.html#tag/cloud-code/operation/runmodule) を参照してください。

> **Note:**
>
> **ノート:** モジュールが過去 15 分間にトラフィックを受信しなかった場合、コールドスタートの待ち時間が発生する可能性があります。その後のモジュールへの呼び出しは、より高速になります。

## 認証##authentication

サービスアカウントまたはステートレストークンを使用してプレイヤーまたは信頼されているクライアントとして認証するには、[認証](../authentication) を参照してください。受信したトークンを Bearer トークンとしてリクエストヘッダーで HTTP 認証に使用します。

```bash
Authorization: Bearer <BEARER_TOKEN>
```

## モジュールエンドポイントリクエストの実行##run-module-endpoint-request

POST リクエストを以下の宛先に送信することで、Cloud Code API を呼び出します。

```http request
https://cloud-code.services.api.unity.com/v1/projects/<PROJECT_ID>/modules/<MODULE_NAME>/<FUNCTION_NAME>
```

パスパラメーターを定義します。

* `PROJECT_ID` - プロジェクトの ID。
* `MODULE_NAME` - モジュールの名前。
* `FUNCTION_NAME` - モジュールエンドポイントの名前。これは、コードで定義した `CloudCodeFunction` です。

単純な cURL コマンドは以下のようになります。

```bash
curl --request POST 'https://cloud-code.services.api.unity.com/v1/projects/<PROJECT_ID>/modules/<MODULE_NAME>/<FUNCTION_NAME>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <BEARER_TOKEN>'
```

## リクエストペイロード##request-payload

メソッドシグネチャ内部でモジュール関数のパラメーターを定義できます。モジュール関数を構造化する方法については、[モジュール構造](../module-structure) を参照してください。例えば、以下のメソッドは、文字列パラメーターである weapon と bodyPart を定義します。

```csharp
[CloudCodeFunction("IntroduceGuard")]
public string IntroduceGuard(string weapon, string bodyPart)
{
return $"I used to be an adventurer like you. Then I took an ${weapon} to the ${bodyPart}.";
}
```

これらのパラメーターは、エンドポイントを呼び出すときに JSON としてリクエスト本文内で渡されます。パラメーターの大文字と小文字はメソッドシグネチャと一致している必要があります。

```json
{
  "params": {
    "weapon": "arrow",
    "bodyPart": "knee"
  }
}
```

完全な cURL コマンドは以下のようになります。

```bash
curl --request POST 'https://cloud-code.services.api.unity.com/v1/projects/<PROJECT_ID>/modules/<MODULE_NAME>/<FUNCTION_NAME>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <BEARER_TOKEN>' \
--data-raw '{
  "params": {
    "weapon": "arrow",
    "bodyPart": "knee"
  }
}'
```

## サンプル出力##sample-output

これはモジュールの出力例です。

```json
{
    "output": "I used to be an adventurer like you. Then I took an arrow to the knee."
}
```
