0

だから私はPlay1.2.xアプリケーションを次のように更新しています

- controllers
    - api 
        - Documents // create, update, read, delete, list
        ... // more controllers
    - web
        - Documents // list, read, etc...
        .. // more controllers

apiパッケージのコントローラーは、モバイルクライアント(Android、iPhone)で使用されるJsonとしてデータをレンダリングします。

ここで、APIを使用する単純なHTMLWebアプリが必要です。では、WebパッケージのコントローラーからAPIをどのように使用できますか?

私の目標は、WebコントローラーロジックでAPIコントローラーロジックを書き直さないようにすることです。

ありがとう!

4

2 に答える 2

3

私の意見では、コントローラー間でメソッドを再利用することはベストプラクティスではありません。共有動作はモデルにコーディングする必要があり、両方のコントローラーが同じモデルメソッドを使用できます。

それでも、必要に応じて、APIコントローラーのパブリックメソッドで共有動作を抽出し、「@ Util」と注釈を付けて、Webコントローラーからこのメソッドを呼び出すことができます。

于 2012-07-19T15:46:43.567 に答える
1

あなたの質問には多くの詳細がないので、それが当てはまるかどうかはわかりませんが、通常、REST APIを実装するときに、さまざまな形式(JSONとHTML、たとえばJSONPとXMLが必要な場合)で回答を提供させます。

主なアイデアは

  1. リクエストをチェックして、必要な形式を確認してください。コンテンツタイプの受け入れ、URL拡張子、またはパラメーター(およびそれに関する詳細)のいずれかを使用します。
  2. 適切なテンプレートを選択します(または、Jsonオブジェクトを既に正しくビルドしている場合はテンプレートをスキップします)

プレイでは、最初の部分を実行するさまざまな方法があります。ルートを介して:コンテンツをリクエスト-Playで入力してください!RESTWebサービスのフレームワーク; これについては、 Playのドキュメントに特定のページがあります。

しかし、この回答で最も重要な部分は2番目のポイントです。同じコントローラーを使用する必要があります。HTMLテンプレートは、json(またはもう少し)として返送されるのとまったく同じデータでページをレンダリングできる必要があります。

NB。もう少しカスタマイズする必要がある場合requestは、コントローラーのオブジェクトにアクセスし、要求された形式を確認し、それに応じて適切なテンプレートを使用して適切なデータを返すように行動します。

于 2012-07-20T08:18:00.177 に答える