2017-06-20 4 views
1

人物コレクションには、姓と名が同じ複数の人物が含まれているとします。 (すなわち、例:Andrew Thomasという名前の複数の人物)。下の残りのリクエストの返答はどうなるのでしょうか?春休み:pathVariableが複数のエンティティに一致するときにスプリングを返すか、エラーをスローすると

/persons/{firstName}/{lastName} ie。今/persons/andrew thomasすなわち/persons/andrew/thomas または

/persons/{firstName lastName}(スペースはパス変数で許可されているかどうかわからない)

デシベルクエリが複数のレコードを返しますから、何を私は期待して(またはリターンへの正しい応答は何であるべきです)

+0

あなたはAPIのURLは、あなたが好むものに依存一覧 '' – StanislavL

+0

期待するべきです。たとえば、* firstName *と* lastName *がDB基準のフィールドと異なる場合、最初のケースがよりよく適合します。同じフィールドの場合は、2番目のケースを使用する必要があります。問題を回避するには、URLパラメータのエンコーディング/ decondingを使用しています。リターンは、例えばリストのようなコレクションでなければなりません。 –

答えて

2

これは、メソッドの戻り値の型、またはこのAPIの出力として返すものによって完全に決まります。

あなたはそれが唯一の人物オブジェクトを返すことができ

public Person getperson(){} 

として唯一の人物オブジェクトを返した場合。 この瞬間に複数の結果が得られた場合、戻り値の型は単一のオブジェクトのみを返すことができるため、エラーが発生します。あなたは同じ姓と名を持つ複数のオブジェクトを取得している場合

だから、それはあなたが1つの結果、多くの結果を得るのいずれかに動作します上記の場合

public List<Person> getperson(){} 

としてリストとして戻り値の型を使用する必要があります または結果はありません。

おかげで、それはあなたがprimary or unique key上で検索されていない場合は、RESTのAPIの戻り値の型は常にListあるべき

+0

私は主キーに照会しておりませんので、もし、私は、クエリは、単一のエンティティまたはエンティティのリストを返す場合は、1つは確かにすることはできませんと、リストを返すことは安全かもしれないと仮定します。右 ??? – samshers

+0

絶対に右。あなたは天気がわからないときは、単一​​の出力のみ複数回使用のリストを取得します。 –

1

をあなたを助けることを願っています。クエリが複数のレコードを返す場合

+0

これは答えだと思います。 tx – samshers

関連する問題