Playを使用してRESTAPIを開発しました!フレームワーク1.2.4、そして私はフレームワークがとても好きです。シンプルさと迅速な開発サイクルにより、従来のJavaEEルートを使用した場合の数分の1の時間でこれを達成できました。
今、私はPlayを使って探索しています!次のプロジェクトでは2.0.3。フレームワークが強化され、 Webアプリの開発がさらに容易になっている一方で、RESTAPIについては同じことが言えないことがわかりました。私のアプリにはHTMLがまったく含まれていません。XMLやJSON、または将来使用することにしたデータ交換形式で応答するだけです。
したがって、問題は次のとおりです。
ここで誰かがPlay2.0.xを使用して非htmlの純粋なRESTAPIを公開したことがありますか?
詳細:
これが、1.2.xと比較してPlay2.0.xで純粋なRESTAPIを開発することをより困難にしていると私が感じるいくつかの要因です。私が間違っている場合は、私の理解を訂正してください。
コンテントネゴシエーションは難しい
劇中!1.2.4、コンテントネゴシエーションがフレームワークに組み込まれました。ルートファイルで、リクエストが期待するコンテンツタイプを正しく定義するオプションがありました。
GET /friends User.listFriends(format:'xml')
次に、コントローラーで、
public static void getFriends(){
render();
}
これにより、views/xml/User/listFriends.xml
テンプレートが自動的にレンダリングされます。明日JSONのサポートを追加するには、views/json/User/listFriends.json
テンプレートを追加するだけで済みました。
これが実際にどのように行われるのかわかりません!2.0.x
HTML以外のテンプレートの作成は直感的ではありません
試行錯誤の末、たとえば、playのviewsフォルダーにlistFriends.scala.xmlを作成できることがわかりました。2.0。次に、次のようにコントローラーコードで呼び出す必要があります。
return ok(views.xml.listFriends.render())
;
views.xml.listFriends
ただし、Eclipseはこれを好みません。これは、Playのコンパイルが完了した後にのみ生成されるため、Eclipseはそれを認識しないためです。ここで足りないものはありますか?