2016-03-22 9 views
1

Grails 3.1.4でRESTfulドメインの機能を調べていて、奇妙な結果を得ています。例えば、私は、このドメインオブジェクト(および、該当するコントローラを)持っている:GrailsでRestを使用して特定のIDを見つける

$ curl http://localhost:8080/book 
[{"id":1,"name":"The Time Machine"},{"id":2,"name":"Moby Dick"}] 

しかし、特定のオブジェクトを取得することは失敗します:すべてのオブジェクトを照会

package resttest 

import grails.rest.* 

@Resource(readOnly = false, formats = ['json', 'xml']) 
class Book { 
    String name 
} 

がOKを動作するようです

$ curl http://localhost:8080/book/1 
{"message":"Not Found","error":404} 

私は間違ったことをしているに違いないが、私はそれを見ることができない。

答えて

1

@Resourceに有効なURIを入力してから、エンドポイントにアクセスする必要があります。私はBookリソースのために以下のように使用します(bookの代わりに複数のbooksを書き留めてください)。

import grails.rest.Resource 

@Resource(uri = "/books", readOnly = false, formats = ['json', 'xml']) 
class Book { 
    String name 
} 

結果:

$ curl http://localhost:8080/books 
[{"id":1,"name":"The Time Machine"},{"id":2,"name":"Moby Dick"}] 
$ curl http://localhost:8080/books/1 
{"id":1,"name":"The Time Machine"} 
+1

はい、もちろん!私は、uriのプレースホルダを追加しなくても、create-domain-resourceコマンドによって誤ったセキュリティの感覚に惑わされました:-O –

+0

はい、わかりました。多分、これは上記のような問題を避けるために、テンプレート自体にurlをdomainNameの複数形にデフォルトすることを追加する良い機能です。必要に応じて、[issue in grails-core](https://github.com/grails/grails-core/issues)を改善することができます。 – dmahapatro

+1

作成された問題:[grails-core#9812](https://github.com/grails/grails-core/issues/9812) –

関連する問題