【问题标题】:REST Client Grails Groovy unable to resolve class RestClientBuilderREST 客户端 Grails Groovy 无法解析类 RestClientBuilder
【发布时间】:2026-01-24 14:25:01
【问题描述】:

我有一个使用 GGTS 创建的空项目,我的应用程序运行良好,我可以看到视图并很好地浏览它们。

我需要调用一个 REST api 并使用提供的数据,我读取了必要的插件并将其添加到依赖项下的 BuildConfig 文件中,然后在插件部分下,它们似乎都不起作用。

compile ":rest-client-builder:2.0.0"

我已经创建了一个控制器,我不确定在哪里添加导入,所以我尝试了:

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
    }

但我得到错误:无法解析类....

API 正在返回 JSON 数据,我目前所做的只是创建一个新的 Grails 项目,添加控制器,添加视图,然后添加依赖项。

我已经多次清理了一个已构建的项目,但错误仍然存​​在。

感谢您的帮助。

【问题讨论】:

标签: spring rest grails groovy ggts


【解决方案1】:

导入在顶部

包线后

在课前

另外,根据您的 grails 版本,您可能想要移动 ggts...不确定它是否受支持...

【讨论】:

  • 谢谢,我把导入放在那里,但我现在无法解析类 grails.plugins.rest.client.RestBuilder,和以前一样的问题。你会推荐什么来代替 ggts?谢谢!!
【解决方案2】:

我认为问题出在您的 build.gradle 依赖定义中。

在您的 build.gradle 文件中插入下一行,我认为这会有所帮助:

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

更多信息请关注grails plugin documentation.

请注意,所有的业务逻辑都应该放在服务层而不是控制器中。保持控制器尽可能精简是最佳做法。

另一个最佳实践是定义以下行:

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

在控制器的开头作为静态最终字符串

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

并在需要时在代码中添加 $id。

这是在方法中应该如何调用它:

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

【讨论】:

  • Rotem,感谢您的回答,这是我的第一个 Grails 应用程序,我不知道它是如何工作的。我在 buildconfig.groovy 文件中添加了这一行,我在项目的任何地方都找不到 build.grandle 文件。另外,我不确定在哪里添加业务逻辑,是域类还是普通类?
  • 如果你不熟悉 gradle 构建工具,我建议你阅读以下文档,以稍微了解一下 gradle。 docs.gradle.org/current/userguide/tutorial_java_projects.html。 build.gardle 文件应该设置在 webapp 目录下。如果您不熟悉服务,请暂时离开,这是一种很好的做法,但不是强制性的。