2017-09-14 10 views
0

私はSpring Bootを使用して複雑なWebアプリケーションを扱っています。 私は、互いに結合された複数のエンティティを持っています。 プロジェクトは複数のクラスターを持つことができますが、クラスターは1つのプロジェクトにしか属しません。 クラスタは複数のケースを持つことができますが、ケースは1つのクラスタにしか属しません。 Case-> Resultと同じです。複雑なアプリケーションでURLを生成する方法

この関係は単方向です。したがって、プロジェクトはどのクラスターがそれに属しているかを知っていますが、クラスターにはそれが属するプロジェクトの手がかりがありません。 Cluster-> CaseとCase-> Resultと同じです。

私は第四のURLでいる時、私が直面してる問題は私がいない場合に、ある以下のURL構造、

/projects 
/projects/(id project)/clusters 
/projects/(id project)/clusters/(id cluster) 
/projects/(id project)/clusters/(id cluster)/case 

など....

を持っていますケースはクラスタのIDを使用して保存するため、プロジェクトのIDが必要です。 しかし、URLの構造のために、私は完全性を維持するためにプロジェクトのIDが必要です。 そして、私の関係(単方向性)の性質のために、私のクラスターの助けを借りて私のケースコントローラーでプロジェクトのIDを探す必要があります。

この問題を簡単に解決する方法はありますか?

答えて

0

私はAPIを構築する別の方法を提案したいと思います。 URIを定義する際には、各エンティティを独立したオブジェクトと考えるべきです。

たとえば、あなたが持つことができ、次のURI:

/projects GET - returns a list of projects 
/projects/{id} GET - returns a details of a particular entity 
/projects POST - create new project 
/projects/{id} DELETE - delete project 

クラスタのためのAPIの場合は、あなたが同じ構造を持つことができます。問題は、我々はのためにクラスタを作成する方法である

/clusters GET - returns a list of projects 
/clusters/{id} GET - returns a details of a particular entity 
/clusters POST - create new project 
/clusters/{id} DELETE - delete project 

特定のプロジェクトですか?簡単に! projectIdをJSON本体に渡すことができます。 これは、1つの大きな利点を持つ一般的な方法です。長いURIはアプリケーションにはないでしょう。

関連する問題