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
| Parameter | Type | Required | Description |
|---|---|---|---|
| storage_items | array | Required | List of data to save |
storage_items Array Elements
| Field | Type | Required | Description |
|---|---|---|---|
| storage_key | string | Required | Key of the data to save |
| storage_value | string | Required | Value of the data to save |
Response Data
| Field | Type | Description |
|---|---|---|
| Status | string | Processing 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.