-
Notifications
You must be signed in to change notification settings - Fork 11
03.04.テンプレート
テンプレートとデータファイルを使ってHTMLをレスポンスするためのドキュメントです。
project.yamlのtemplate
とdata
を設定すると、HTMLをレスポンスすることができます。
テンプレートファイルのルートディレクトリです。プロジェクトルートからの相対パスを指定します。
Aeromockが実装しているテンプレートのサービスクラスを指定します。
テンプレートエンジン | サービスクラスFQDN |
---|---|
Freemarker | jp.co.cyberagent.aeromock.template.freemarker.FreemarkerTemplateService |
Handlebars.java | jp.co.cyberagent.aeromock.template.handlebars.HandlebarsTemplateService |
Jade4j | jp.co.cyberagent.aeromock.template.jade4j.Jade4jTemplateService |
Velocity | jp.co.cyberagent.aeromock.template.velocity.VelocityTemplateService |
Groovy Templates | jp.co.cyberagent.aeromock.template.groovytemplate.GroovyTemplateService |
Thymeleaf | jp.co.cyberagent.aeromock.template.thymeleaf.ThymeleafTemplateService |
テンプレートデータのルートディレクトリです。プロジェクトルートからの相対パスを指定します。
template:
root: ../template
serviceClass: jp.co.cyberagent.aeromock.template.freemarker.FreemarkerTemplateService
data:
root: ./data
各テンプレートエンジン毎の設定ファイルがあります。テンプレートエンジンの挙動を制御するためのものです。テンプレートエンジンによって仕様が異なるので、それぞれのドキュメントを参照して下さい。
テンプレートファイルとデータファイルを同じ階層に配置することで紐付けられます。
template_root/path1/test.ftl -> data_root/path1/test.yaml
基本的に、テンプレートデータファイルの仕様はJSON APIのデータファイルと同じです。テンプレートデータファイルでは、JSON APIのデータファイル仕様に加えて以下の特殊仕様があります。
基本的に、データファイルで定義したデータはhash構造です(Javaでいうとjava.util.Map)が、テンプレートエンジンによってはJavaのオブジェクトが持つメソッドを実行することがあります。
Aeromockでは__methods
というプロパティを設定することで、モック値を返すメソッドをオブジェクトに追加することが出来ます。__methods
はname
(メソッド名)とvalue
(メソッドが返すモック値)のオブジェクトの配列を持ちます。このモックメソッドは、引数の数を問わず呼び出すことが出来ます。
target:
prop1: prop1Value
__methods:
- name: execute1
value: execute1Value
- name: execute2
value:
id: 100
name: foobar
<html>
<head></head>
<body>
<ul>
<li>target.prop1 = ${target.prop1}</li>
<li>target.exeucte1() = ${target.execute1()}</li>
<#assign execute2Result = target.execute2() >
<li>target.exeucte2().id = ${execute2Result.id}</li>
<li>target.exeucte2().name = ${execute2Result.name}</li>
</ul>
</body>
</html>
また、メソッドの引数をARGUMENTS
という変数で参照することができます。ARGUMENTS
は配列なので、配列のインデックスをつけて参照します。
<span>${obj.execute("part1:part2:part3")}</span>
obj:
__methods:
- name: execute
value: ${ARGUMENTS[0].split(":")[0]}
モックJSONデータと同様に、テンプレートにも共通データの仕組みがあります。仕様は同じですが、共通データファイルスクリプトは data.groovy という名前で用意します。
テンプレートに実際に適用されているデータファイルの構造を見たい場合、リクエストパラメータに__debug=true
をつけるとYAML構造で出力されます。
カスタムレスポンスもモックJSONデータと同一の仕様です。
テンプレートエンジンによって、Aeromockが独自の拡張をしている場合があります。詳細は以下で確認してください。