Skip to main content

Multi Save Data

Save multiple game 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/save/multi
  • Method: PUT
  • Authentication Required: Yes

Request Parameters

ParameterTypeRequiredDescription
storage_itemsarrayRequiredList of data to save

storage_items Array Elements

FieldTypeRequiredDescription
storage_keystringRequiredKey of the data to save
storage_valuestringRequiredValue of the data to save

Response Data

FieldTypeDescription
StatusstringProcessing status

Code Example

void UMyGame::SaveMultiData()
{
// storage_items 배열 생성
TArray<TSharedPtr<FJsonValue>> ItemsArray;

TSharedPtr<FJsonObject> Item1 = MakeShareable(new FJsonObject());
Item1->SetStringField(TEXT("storage_key"), TEXT("player_level"));
Item1->SetStringField(TEXT("storage_value"), TEXT("10"));
ItemsArray.Add(MakeShareable(new FJsonValueObject(Item1)));

TSharedPtr<FJsonObject> Item2 = MakeShareable(new FJsonObject());
Item2->SetStringField(TEXT("storage_key"), TEXT("player_gold"));
Item2->SetStringField(TEXT("storage_value"), TEXT("5000"));
ItemsArray.Add(MakeShareable(new FJsonValueObject(Item2)));

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

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

// HTTP 요청
TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->SetURL(TEXT("https://service-storage-api.playnanoo.com/storage/v20221001/save/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))
{
FString Status = JsonObject->GetStringField(TEXT("Status"));
UE_LOG(LogTemp, Log, TEXT("다중 데이터 저장 성공: %s"), *Status);
}
}
});

Request->ProcessRequest();
}
Efficient Saving

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

Transaction

All data is saved atomically. If even one fails, the entire operation is treated as failed.