Skip to content

03.04.テンプレート

stormcat24 edited this page Sep 5, 2014 · 3 revisions

テンプレートとデータファイルを使ってHTMLをレスポンスするためのドキュメントです。

project.yaml

project.yamlのtemplatedataを設定すると、HTMLをレスポンスすることができます。

template.root

テンプレートファイルのルートディレクトリです。プロジェクトルートからの相対パスを指定します。

template.serviceClass

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

data.root

テンプレートデータのルートディレクトリです。プロジェクトルートからの相対パスを指定します。

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のデータファイル仕様に加えて以下の特殊仕様があります。

__methods

基本的に、データファイルで定義したデータはhash構造です(Javaでいうとjava.util.Map)が、テンプレートエンジンによってはJavaのオブジェクトが持つメソッドを実行することがあります。

Aeromockでは__methodsというプロパティを設定することで、モック値を返すメソッドをオブジェクトに追加することが出来ます。__methodsname(メソッド名)とvalue(メソッドが返すモック値)のオブジェクトの配列を持ちます。このモックメソッドは、引数の数を問わず呼び出すことが出来ます。

test.yaml
target:
  prop1: prop1Value
  __methods:
    - name: execute1
      value: execute1Value
    - name: execute2
      value:
        id: 100
        name: foobar
test.ftl
<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構造で出力されます。

image

カスタムレスポンス

カスタムレスポンスもモックJSONデータと同一の仕様です。

テンプレート拡張仕様

テンプレートエンジンによって、Aeromockが独自の拡張をしている場合があります。詳細は以下で確認してください。

Clone this wiki locally