私は Scalatra を使用していますが、この質問はどの Scala プログラミングにも当てはまるはずです。私は Ruby on Rails のバックグラウンドを持っています。簡単に言えば、XML Builder や jsonbuilder ( https://github.com/rails/jbuilder ) などのテンプレート システムを使用して、次のようなテンプレートを作成することで、RESTful API での JSON または XML 出力を完全に制御できました。続く:
Jbuilder.encode do |json|
json.content format_content(@message.content)
json.(@message, :created_at, :updated_at)
json.author do
json.name @message.creator.name.familiar
json.email_address @message.creator.email_address_with_name
json.url url_for(@message.creator, format: :json)
end
if current_user.admin?
json.visitors calculate_visitors(@message)
end
json.comments @message.comments, :content, :created_at
json.attachments @message.attachments do |attachment|
json.filename attachment.filename
json.url url_for(attachment)
end
end
@message
ここでの理想は、コントローラーとアクションで必要なロジックをオブジェクトにまとめることです。if current_user.admin?
それは、いくつかのものを含める、そうでなければ含めないなどのロジックを持つテンプレートに渡されます。
同様のことを行うために Scala または Scalatra で利用できる同等のツールは何ですか? 特定のモデルから生成された JSON または XML をオーバーライドできることはわかってserializer
いますが、Ruby では (間違っていたら訂正してください)as_json
またはをオーバーライドするのと同じことですas_xml
。ただし、テンプレートがはるかに複雑で、複数のモデル、データの特定の構造化、データの特定の順序付けなどを含む場合があります。これは私が必要とする柔軟性です。Scala/Scalatra 環境でそのようなテンプレートを作成できるツールは現在ありますか?