データの変換 - Cloud

Talend Cloud API Testerユーザーガイド

EnrichVersion
Cloud
EnrichProdName
Talend Cloud
EnrichPlatform
Talend API Tester
task
ジョブデザインと開発 > Testing APIs

Talend Cloud API Testerでは、関数を使ってデータを操作できます。

関数では、新しいデータを作成したり、既存のデータを変換したりできます。データを変換する関数は、終了する式の値に適用されます。

使用例

Star Wars APIの惑星リストで最初の10個の惑星名を取得する場合は、${"Star-wars API"."Get 10 planet names"."response"."body".jsonPath("$.results[:10].name")}という式を使用します。jsonPathメソッドにより、${"Star-wars API"."Get 10 planet names"."response"."body"}という式の結果が解析されます。

過去1週間のログを取得する場合は、クエリーパラメーターにhttps://myapi.com/logs?from=${timestamp().addTime("WEEK", "-1")}&to=${timestamp()}という式を含むURLを作成します。

現在の日付をISO形式で生成する場合は、${timestamp().formatDate('TIMESTAMP', 'ISO_8601')}を使用します。

定数

${"toto"}のような式を記述する場合、式は以下のように評価されます。

  • 値がある場合は、現在の環境の変数totoの値。
  • 一致する環境変数がない場合は、リポジトリーのルートレベルのrequest/scenario/service/project toto
  • それ以外の場合は文字列toto

データ作成

関数 説明 引数
timestamp

1970年1月1日、00:00:00 GMTから評価された日付までのミリ秒数を返します。

なし

式: ${timestamp()}

考えられる結果: 1505136142950

UUID

UUIDを返します。

なし

式: ${uuid()}

考えられる結果: f5fafd92-2298-4e72-97c9-df4dabaf27d2

random 0 <= number < maxの範囲内の乱数を返します。

Maximum: デフォルトは1000000000

式: ${random(50)}

考えられる結果: 42

randomString 特定の長さのランダムな文字列を返します。
注: この関数はパスワード生成での信頼性が低いため、この目的には使用しないでください。

Length: 文字列にある文字数。デフォルトは10です。

[a-z]: 文字列に小文字を含める場合はこのチェックボックスをオンにします。

[A-Z]: 大文字を含める場合はこのチェックボックスをオンにします。

[0-9]: 数字を含める場合はこのチェックボックスをオンにします。

式: ${randomString(10, true, true, true)}

考えられる結果: 4ptUKhHYMr

データ変換

関数 説明 引数
base64

ベース64にエンコードされます。

なし

式: ${"username:password".base64()}

結果: dXNlcm5hbWU6cGFzc3dvcmQ=

lower

デフォルトロケールの規則を使用して、すべての文字を小文字に変換します。

なし

式: ${"AbC".lower()}

結果: abc

length

以下の入力の長さを計算します。

  • 入力が文字列の場合、文字数
  • JSON配列の項目の数
  • JSONオブジェクトのキーの数
なし

式: ${"Star-wars API"."Get 2 planets"."response"."body"}

結果:
{
                  "count":61,
                  "results": [
                  {"name":"Alderaan" },
                  {"name":"Naboo" },
                  {"name":"Hoth" }
                  ]
                  }

式: ${"Star-wars API"."Get 2 planets"."response"."body".length()}

結果: 2 式: ${"Star-wars API"."Get 2 planets"."response"."body"."results".length()}

結果: 3

式: ${"Star-wars API"."Get 2 planets"."response"."body"."results"."0"."name".length()}

結果: 8

Substring 切り捨てられた入力を返します。

Start: 抽出する最初の文字の位置(デフォルトでは0)。

End: 省略する最初の文字の位置(デフォルトでは入力の最後)。

注: 最初の文字のインデックスは0です。

式: ${"0123456".substring(1)}

結果: 123456

式: ${"0123456".substring(1, 2)}

結果: 1

式: ${"0123456".substring(0, 4)} 結果: 0123

jsonPath 指定されたJSONパスselectorを使い、JSON入力から抽出されたエレメントを返します。

Selector: 入力から抽出するJSONの部分を指すJSONパスセレクター。

式: ${"{\"titi\": \"toto\"}".jsonPath("$.titi")}

結果: toto

XPath 指定されたXPathである selectorを使い、XML入力から抽出されたエレメントを返します。 Selector: 入力から抽出するXMLの部分を指すXPathセレクター。

式: ${"<title lang="en" />".xPath("//title/@lang")}

結果: [lang="en"]

hmac

ハッシュベースのメッセージ認証コードを作成します。

Cipher: ハッシュ関数(SHA1SHA224SHA256SHA384SHA512のいずれか)。

Secret

: シークレットキー。

Output: 出力タイプ(Base64またはHex)。

式: ${"test".hmac("sha256", "secret", "Base64")}

結果: Aymga2LNFrM+tnkr6MYLFY2Jou46h2/Omogeu0iMCRQ=

式: ${"test".hmac("sha1", "secret", "Hex")}

結果: 1aa349585ed7ecbd3b9c486a30067e395ca4b356

sha その入力をハッシュ化します。

Cipher: ハッシュ関数(SHA1SHA224SHA256SHA384SHA512のいずれか)。

Output: 出力タイプ(Base64またはHex)。

式: ${"toto".sha("SHA224", "Base64")}

結果: IcBD7s1+hUI6ctrjwGKitb+g5rNc4/54jJtXpg==

式: ${"toto".sha("SHA1", "Hex")}

結果: 0b9c2625dc21ef05f6ad4ddf47c5f203837aa32c

md5

入力のMD5ハッシュを計算します。

なし

式: ${"toto".md5()}

結果: f71dbe52628a3f83a77ab494817525c6

upper

デフォルトのロケールの規則を使用して、すべての文字を大文字に変換します。

なし

式: ${"aBc".upper()}

結果: ABC

String 入力は引用符で囲みます。

Quotes: 入力の引用に使用する文字('または"で、デフォルトでは"を使用)。

式: ${"toto".string()}

結果: "toto"

式: ${"toto".string("\"")}

結果: "toto"

式: ${"toto".string("'")}

結果: 'toto'

math 選択された操作を入力値で実行します。

Operation: ADDSUBTRACTMULTIPLYDIVIDEのいずれか

Value: 数字

式: ${"7".math("MULTIPLY", "6")}

結果: 42

式: ${"3.14".math("ADD", "0.00159265")}

結果: 3.14159265

式: ${"100".math("DIVIDE", "-5")}

結果: -20

addTime 日付に対し、選択された時間単位の数字を追加または削除します。

Time unit: YEARMONTHWEEKDAYHOURMINUTESECONDのいずれか

Value: 整数(負数を使えば時間単位の削除が可能)

式: ${timestamp().addTime("YEAR", "1")}

考えられる結果: 1620292896490

式: ${timestamp().addTime("WEEK", "-2")}

考えられる結果: 1587547696437

formatDate 日付を選択された形式に変換します。

Input format: TIMESTAMPまたはISO_8601

Output format: TIMESTAMPまたはISO_8601

式: ${timestamp().formatDate("TIMESTAMP", "ISO_8601")}

考えられる結果: 2020-05-06T13:43:22.248Z

式: ${"2020-04-06T13:44:51.435Z".formatDate("ISO_8601", "TIMESTAMP")}

結果: 1586180691435