Skip to main content

Multi Load Data

Load multiple saved data at once.

URL Verification

This API uses the service-storage-api.playnanoo.com domain.

API Information

  • URL: https://service-storage-api.playnanoo.com/storage/v20221001/load/multi
  • Method: PUT
  • Authentication Required: Yes

Request Parameters

ParameterTypeRequiredDescription
storage_keysarrayRequiredList of data keys to load

Response Data

FieldTypeDescription
ItemsarrayList of loaded data

Items Array Elements

FieldTypeDescription
PlayerIdstringPlayer ID
StorageKeystringKey of the data
StorageValuestringValue of the data

Code Example

void UMyGame::LoadMultiData()
{
// storage_keys 배열 생성
TArray<TSharedPtr<FJsonValue>> KeysArray;
KeysArray.Add(MakeShareable(new FJsonValueString(TEXT("player_level"))));
KeysArray.Add(MakeShareable(new FJsonValueString(TEXT("player_gold"))));
KeysArray.Add(MakeShareable(new FJsonValueString(TEXT("player_inventory"))));

// 플레이어 정보가 포함된 요청 바디 생성
TSharedPtr<FJsonObject> Body = FPlayNANOOHelper::CreateRequestBody();
Body->SetArrayField(TEXT("storage_keys"), KeysArray);

// JSON 문자열 변환
FString JsonBody = FPlayNANOOHelper::ToJsonString(Body);

// HTTP 요청
TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->SetURL(TEXT("https://service-storage-api.playnanoo.com/storage/v20221001/load/multi"));
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))
{
const TArray<TSharedPtr<FJsonValue>>* Items;
if (JsonObject->TryGetArrayField(TEXT("Items"), Items))
{
for (const auto& Item : *Items)
{
TSharedPtr<FJsonObject> ItemObj = Item->AsObject();
FString Key = ItemObj->GetStringField(TEXT("StorageKey"));
FString Value = ItemObj->GetStringField(TEXT("StorageValue"));
UE_LOG(LogTemp, Log, TEXT("데이터: %s = %s"), *Key, *Value);
}
}
}
}
});

Request->ProcessRequest();
}
Efficient Loading

When you need to load multiple data simultaneously, using this API is efficient as it reduces the number of network requests.

Non-existent Keys

Even if some of the requested keys do not exist, no error occurs and only existing data is returned.