Cloud代码 执行
执行服务器上注册的CloudCode函数。
URL确认
此API使用 service-api.playnanoo.com 域名。
API信息
- URL:
https://service-api.playnanoo.com/cloudcode/v20210901/run - Method:
PUT - 需要认证: 是
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| table_code | string | 必填 | Cloud代码 表 代码 |
| function_name | string | 必填 | 要执行的函数名称 |
| function_arguments | string | 必填 | 函数参数 (JSON字符串) |
响应数据
| 字段 | 类型 | 说明 |
|---|---|---|
| Function | object | 执行 函数 信息 |
| Logs | array | 函数 执行 日志 |
| Result | object | 函数 执行 结果 |
| Error | string | 错误消息 (发生错误时) |
| RunTimeMilliSeconds | number | 执行时间 (毫秒) |
代码示例
void UMyGame::ExecuteCloudCode(const FString& TableCode, const FString& FunctionName)
{
// 함수 인자를 JSON 문자열로 생성
TSharedPtr<FJsonObject> ArgsObject = MakeShareable(new FJsonObject);
ArgsObject->SetStringField(TEXT("InputValue1"), TEXT("value1"));
ArgsObject->SetStringField(TEXT("InputValue2"), TEXT("value2"));
FString ArgsJson;
TSharedRef<TJsonWriter<>> ArgsWriter = TJsonWriterFactory<>::Create(&ArgsJson);
FJsonSerializer::Serialize(ArgsObject.ToSharedRef(), ArgsWriter);
// 플레이어 정보가 포함된 요청 바디 생성
TSharedPtr<FJsonObject> Body = FPlayNANOOHelper::CreateRequestBody();
Body->SetStringField(TEXT("table_code"), TableCode);
Body->SetStringField(TEXT("function_name"), FunctionName);
Body->SetStringField(TEXT("function_arguments"), ArgsJson);
// JSON 문자열 변환
FString JsonBody = FPlayNANOOHelper::ToJsonString(Body);
// HTTP 요청
TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->SetURL(TEXT("https://service-api.playnanoo.com/cloudcode/v20210901/run"));
Request->SetVerb(TEXT("PUT"));
FPlayNANOOHelper::SetCommonHeaders(Request, true); // 인증 토큰 포함
Request->SetContentAsString(JsonBody);
Request->OnProcessRequestComplete().BindLambda(
[](FHttpRequestPtr Req, FHttpResponsePtr Res, bool bSuccess)
{
if (bSuccess && Res.IsValid())
{
TSharedPtr<FJsonObject> JsonObject;
TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(Res->GetContentAsString());
if (FJsonSerializer::Deserialize(Reader, JsonObject))
{
int32 RunTime = JsonObject->GetIntegerField(TEXT("RunTimeMilliSeconds"));
UE_LOG(LogTemp, Log, TEXT("클라우드코드 실행 완료 (%dms)"), RunTime);
}
}
});
Request->ProcessRequest();
}
Cloud代码 使用
使用CloudCode可以在服务器上执行游戏逻辑,防止客户端操控,并安全地处理复杂计算或数据验证。
执行 时间
CloudCode函数的执行时间过长时可能会发生超时。建议编写高效的代码。