2017-04-08 3 views
0

Ich habe ein leeres Projekt erstellt mit GGTS, meine App läuft gut, ich kann die Ansichten sehen und durch sie fein navigieren.REST-Client Grails Groovy kann Klasse nicht auflösen RestClientBuilder

Ich brauche con rufen Sie eine REST-API und konsumieren die bereitgestellten Daten, ich lese und fügte das notwendige Plug-in in die BuildConfig-Datei unter den Abhängigkeiten und dann unter den Plugins Abschnitt scheint keiner von ihnen zu funktionieren.

compile ":rest-client-builder:2.0.0" 

ich einen Controller erstellt haben, bin ich nicht sicher, wo die Einfuhr hier hinzufügen, also habe ich versucht:

package myapp 


class UserController { 

    def index() { 
     import grails.plugins.rest.client.RestBuilder 
     String url = "https://foo.com/batch/$id" 
     def resp = new RestBuilder().get(url) { header 'Authorization', 'Basic base64EncodedUsername&Password' } 

     render resp 
    } 

aber ich habe den Fehler: nicht in der Lage Klasse zu lösen. ...

Die API gibt JSON-Daten zurück, was ich bisher gemacht habe, ist nur ein neues Grails-Projekt zu erstellen, Controller hinzuzufügen, Ansicht hinzuzufügen und dann die Abhängigkeit.

Ich habe das Projekt mehrmals gereinigt aber der Fehler bleibt bestehen.

Danke für Ihre Hilfe.

Antwort

0

Import geht an der Spitze

Nach der Paketlinie

Und vor der Klassenleitung

Auch abhängig von Ihrer Version von Grails, mögen Sie vielleicht von ggts bewegen ... Nicht sicher, dass es mehr unterstützt wird ...

+0

Dank, habe ich den Import dort aber ich nicht in der Lage Klasse grails.plugins.rest.client.RestBuilder jetzt, das gleiche Problem zu lösen wie vor . Was würdest du anstelle von gts empfehlen? Vielen Dank!! – fabian278

0

Ich denke, dass das Problem in Ihrer Build.gradle Abhängigkeitsdefinition ist.

Legen Sie die nächste Zeile in die build.gradle Datei und ich denke, dass hilfreich sein:

compile "org.grails.plugins:rest-client-builder:2.1.1" 

Weitere Informationen der grails plugin documentation.

Bitte folgen Sie beachten, dass alle Business-Logik platziert werden soll in der Service-Schicht und nicht in der Steuerung. Es ist eine bewährte Methode, Ihren Controller so schlank wie möglich zu halten.

Eine weitere beste Vorgehensweise ist die folgende Zeile zu definieren:

String url = "https://foo.com/batch/$id" 

im beggining des Controllers als static final String

static final String url = "https://foo.com/batch/" 

und fügen Sie den $ id, wenn im Code benötigt.

Hier ist, wie das sollte innerhalb der Methode aufgerufen werden:

String url = "${url}/{$id}" 
+0

Rotem, danke für deine Antwort, dies ist meine erste Grails App und ich habe keine Ahnung wie es funktioniert. Ich habe die Zeile in der Datei buildconfig.groovy hinzugefügt. Ich kann die Datei build.grandle nirgendwo in meinem Projekt finden. Auch bin ich nicht sicher, wo die Geschäftslogik hinzuzufügen, ist es eine Domain-Klasse oder nur eine reguläre Klasse? – fabian278

+0

In diesem Fall sind Sie nicht vertraut mit dem Gadget-Build-Tool, ich würde empfehlen, die folgende Dokumentation zu lesen, um ein wenig über Gradle zu beleuchten. https://docs.gradle.org/current/userguide/tutorial_java_projects.html. Die Datei build.gardle sollte unter dem Verzeichnis webapp gesetzt werden. Wenn Sie mit Dienstleistungen nicht vertraut sind, lassen Sie es für jetzt, es ist eine gute Praxis, aber nicht obligatorisch. – Rotem

Verwandte Themen