Java Web開発スキルの点で比較的新しいです。APIについてほとんど理解していないことから、RESTfulサービスの良い候補になると思うプロジェクトがあります。私はこれがどのように構造化されることになっているのか詳細に行きますが、グーグル検索と私が既に持っている資料の観点から実際にはどこにも行きません。この投稿が私の観点からいくつかの検証および/またはリダイレクトをもたらすことを望んでいますこのトピックに関する知識と仮定。
私の現在の想定では、RESTfulサービスは次のような構造になっています。
@ResponseBody
を使用してURLおよびHTTP動詞を介してデータを処理する方法のアクションを指示/処理するコントローラークラス/クラス( http: //mysite.com/computers/Dell は、URLに「Dell」という単語を含むGET
リクエストであり、Dellコンピューターに関する情報のJSON配列を返すパラメーターであるパラメーターです。上記が正しいと仮定すると、(非常に基本的なレベルで)データを消費および使用するために任意のアプリケーションが使用できるRESTfulサービスがあります。
だから私は私のウェブアプリケーションを持っていると言います。コンピューターのハードウェア情報に関するWebアプリを作成していて、Springを使用してこのWebアプリを作成しているとします。ここに私の仮定があります:
ModelAndView
オブジェクトなどを使用して、RESTfulサービスのコントローラーと「通信」します。渡されているデータを取得し、そのデータをビュー(JavaScript、JSPなど)に戻して表示します。私は正しい道を進んでいますか? RESTfulサービスには認証の側面もあると理解していますが、概念的にはまだありません(このプロジェクトはプライベートネットワークで使用されるため、現時点ではセキュリティは優先されません)。
洞察、批評、知識、フィードバック、説明は大歓迎です。
これが、スプリングレストアプリの構造の私のお気に入りのキックオフ例の1つです。
それらはたくさんあります、グーグル検索はあなたを示します。個人的には、SpringでMavenが好きです。上記のプロジェクト構造で機能します。
また、Mavenを使用している場合は、セクション1で説明したすべてのモジュールを集約する親モジュールがあることに注意してください。すべての箇条書きモジュールは、Mavenモジュールにも対応しています。
RESTを使用しているため、JSPをビューとして使用しないことを強くお勧めします。プレーンHTML5 + JavascriptまたはAngularJSなどの一般的なフレームワークをビューとして使用できます。
JSPの使用を主張する場合は、コントローラーとJSPを備えた別のwar(web app)を導入する必要があります。コントローラーはデータ(通常はJson/xml形式)を取得し、モデル(POJO)に解析して、JSPがコントローラーからデータを取得して表示できるようにします。 JSPからのデータの投稿はその逆です。ここでは省略しました。
このトピックは非常に巨大であり、特定の要件に大きく依存するため、完全なガイドにはほど遠いですが、ここに含まれている用語は、追加の調査を行うのに十分です(Googleです)。うまくいけば、これがあなたにアプローチする方法に関するいくつかのアイデアを与えるでしょう。
@ Minjun.Yのほとんどの回答に同意しながら、私はRESTとWebページレイヤーに少し異なるアプローチをとるつもりだと思います。あなたの質問を読んだところ、 WebインターフェースとRESTインターフェースの両方を外の世界に公開したいと考えています。データベースからPOJOを読み取り、データをJSONに変換してから、 JSPによる消費。
サービスレイヤーですべての実際の作業を行い、Webアプリ(JSP)とRESTコントローラー)に個別の「プレゼンテーション」レイヤーを追加することをお勧めします。これらは個別のコントローラーであり、または、RESTサービスのみを使用して、前の回答に従ってクライアント側ですべてのプレゼンテーションロジックを構築します。
また、私はMavenモジュールの大ファンではありません。 Javaショップがプロジェクトを実装する方法は、サービスレイヤーの定期的なリリースを作成し、プレゼンテーションレイヤーを最新のリリースに依存させることです。これについては議論の余地がありますが、私たちはWebインターフェースとRESTインターフェースを別々のMavenプロジェクトとして持っています。これらは通常、異なる.warファイルに存在するため、個別のデプロイメントが必要です。
ところで、私はビルドと依存関係管理ツールを使いこなす必要があることを強調します。プロジェクトが適切なサイズになったら、それらが必要です。 Maven、Jenkins、Nexusなどの無料ツールにより、リリース管理の問題が軽減されます。