클라우드코드 실행
서버에 등록된 클라우드코드 함수를 실행합니다.
URL 확인
이 API는 service-api.playnanoo.com 도메인을 사용합니다.
API 정보
- URL:
https://service-api.playnanoo.com/cloudcode/v20210901/run - Method:
PUT - 인증 필요: 예
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| table_code | string | 필수 | 클라우드코드 테이블 코드 |
| 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();
}
클라우드코드 활용
클라우드코드를 사용하면 게임 로직을 서버에서 실행하여 클라이언트 조작을 방지하고, 복잡한 계산이나 데이터 검증을 안전하게 처리할 수 있습니다.
실행 시간
클라우드코드 함수의 실행 시간이 너무 길면 타임아웃이 발생할 수 있습니다. 효율적인 코드 작성을 권장합니다.