5

私は 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 環境でそのようなテンプレートを作成できるツールは現在ありますか?

4

2 に答える 2