1715579507
2024-05-09 00:29:14
Optimizely CMS コンテンツは、Optimizely Graph サービスに同期してから、GraphQL API によって公開できます。 場合によっては、コンテンツの同期中にプロパティを追加または調整することが必要になることがあります。
この例としては、メディア ファイルに、ファイル サイズをバイト数で表すファイル サイズ プロパティがある場合が挙げられます。 この情報を表示する UI では、バイトをフォーマットする必要があります (例: 10000000) を次のような読み取り可能な文字列に変換します。 10MB。 サーバーは、書式設定された文字列を表示する別のプロパティをグラフ スキーマに追加することでこの役割を担うことができ、これにより、書式設定されたファイル サイズを必要とするアプリケーション間での一貫性が確保されます。
以下のコードは、カスタム API モデル プロパティをグラフ スキーマに追加します。 FileSizeFormattedを使用します。 GetValue を取得する方法 FileSize プロパティを取得し、カスタム拡張メソッドを使用して読み取り可能な文字列にフォーマットします。 ToFormattedString()。
[ServiceConfiguration(typeof(IContentApiModelProperty), Lifecycle = ServiceInstanceScope.Singleton)]
public class FileSizeContentApiModelProperty : IContentApiModelProperty
{
public string Name => "FileSizeFormatted";
public object GetValue(ContentApiModel contentApiModel)
{
if (!contentApiModel.Properties.TryGetValue("FileSize", out var property))
return string.Empty;
if (int.TryParse(property.ToString(), out var fileSize))
return fileSize.ToFormattedString();
return string.Empty;
}
}
次に、実行した後、 コンテンツ同期のスケジュールされたジョブ、GraphQL スキーマとコンテンツが新しいプロパティで更新されました。
クエリ
{
PdfFile(limit: 100) {
items {
FileSize
FileSizeFormatted
}
}
}
結果
{
"data": {
"PdfFile": {
"items": [
{
"FileSize": 2107621,
"FileSizeFormatted": "2mb"
},
{
"FileSize": 1070229,
"FileSizeFormatted": "1045kb"
}
]
}
}
}
これはカスタム API モデル プロパティを作成する基本的な例ですが、カスタム プロパティはすべてのスキーマ タイプに追加されるため、改善の余地があります。 Optimizely Graph はまだ初期段階であるため、プロパティのカスタマイズは将来的に改善されることが期待できます。
#Optimizely #Graph #にカスタム #プロパティを追加する方法