2016-03-22 11 views
1

Ich erkunde die Fähigkeiten der RESTful-Domäne in Grails 3.1.4 und bekomme seltsame Ergebnisse. Zum Beispiel habe ich dieses Domain-Objekt (und keine entsprechenden Controller):Suche nach einer bestimmten ID mit Rest in Grails

package resttest 

import grails.rest.* 

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

alle Objekte abfragen scheint gut zu funktionieren:

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

Aber ein bestimmtes Objekt immer fehlschlägt:

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

Ich muss etwas falsch machen, aber einfach kann ich es nicht sehen.

Antwort

1

Eine gültige URI muss in @Resource zur Verfügung gestellt werden, nach der auf den Endpunkt zugegriffen werden kann. Ich würde wie folgt für eine Book Ressource verwenden (Anmerkung Plural books statt book).

import grails.rest.Resource 

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

Ergebnis:

$ 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

Ja, natürlich! Ich wurde durch den Befehl create-domain-resource in ein falsches Sicherheitsgefühl eingelullt, was nicht einmal einen Platzhalter für uri hinzufügt: -O –

+0

Ja, das kann ich sehen. Vielleicht kann dies eine gute Funktion sein, um die Vorlage selbst zu ergänzen, indem man die URL auf den Domain-Namen Plural setzt, um Probleme wie oben zu vermeiden. Sie können ein [Problem in Grails-Kern] (https://github.com/grails/grails-core/issues) als eine Verbesserung erstellen, wenn Sie möchten. – dmahapatro

+1

Problem erstellt: [grails-core # 9812] (https://github.com/grails/grails-core/issues/9812) –

Verwandte Themen