何が期待されているかについて、私は質問を正しく受けていなかったかもしれません。私の仮定ではparams
、リクエストで利用可能な (nombre または Id またはその両方) のいずれかを持っていると思います。その仮定に基づいて、以下のように基準を実装できます。注:-toInteger()
データ型について言及したようint
に、通常ids
はLong
GORMおよびHibernate永続レイヤーと組み合わせて使用 します。
def criterios = CatalogoJson.createCriteria().listDistinct {
if(params.id) {
idEq(params.id.toInteger())
}
if (params.nombre) {
eq('nombre', params.nombre)
}
}
render criterios as JSON
UPDATE
OK、もう一度試してみましょう。繰り返しますが、私があなたを間違ってフォローしていた場合は、お知らせください。URL をマップする方法は RESTful ではありません。代わりに、REST サービスで期待するものを実装するための最良の方法が 1 つあります。
楽しい方法または I-like-it-this-way
URL マッピングは次のようになります
"/catalog/$id?"(resource: 'catalog')
//Controller Action:-
def show(){
def criterios = CatalogoJson.createCriteria().list {
if(params.id) { //check 1
idEq(params.id.toInteger())
} else if(params.name) { //check 2
eq('name', params.name)
} else if(params.year){ //check 3
eq('year', params.year)
} else if(params.others){ //check 4
eq('others', params.others)
} //so on an so forth //Can also use Switch case if you want
}
render criterios as JSON
}
使用例:-
http://mydomain.com/catalog/134 -->id
を 134 に設定し、チェック 1 を評価する
必要がありますhttp://mydomain.com/catalog?name=Pep --> を および に設定する必要name
がPep
ありますチェック 2 が評価されます
http://mydomain.com/catalog?year=1987 -->year
を params に設定する必要1987
があり、チェック 3 が評価されます
推論-
名前付きクエリ パラメーターを使用して、REST サービスとドメインでのニーズに関してパラメーターを項目化します。名前のないパラメータを使用する場合、URL マッピングは次のようになります。
"/catalog/$id/$name?/$year?/$others?"(resource: 'catalog')
このアプローチの問題は、URL が
http://mydomain.com/catalog/134
http://mydomain.com/catalog/134/Pep
http://mydomain.com/catalog/134/Pep/のようになることです。 1987年
オプションのパラメーターはオプションではなくなりました。URL マッピングのオプション変数をご覧ください。