api - Grails 如何发布到别人的 API

标签 api grails post http-post

我正在编写一个 Grails 应用程序,我希望 Controller 通过 POST 访问其他一些 API,然后使用响应来生成我的用户看到的页面。我无法通过谷歌搜索正确的条款来找到有关发布到另一个页面和接收 Grails 响应的任何信息。我将非常感谢链接到教程或答案,如“这就是所谓的......”。

最佳答案

似乎您正在与某种 RESTful Web 服务集成。有REST客户端插件,链接here .

或者,它很容易在没有插件的情况下做到这一点,链接 here .

我强烈建议让您的 Controller 只是一个 Controller 。将您与此外部服务的接口(interface)抽象到某个类中,例如 OtherApiService或某种实用程序。将与此外部服务通信的所有代码保存在一个位置;这样您就可以模拟您的集成组件并使其他任何地方的测试变得容易。如果您将此作为一项服务进行,则您有扩展空间,例如,如果您想开始将 API 中的一些数据存储在您自己的应用程序中。

无论如何,从链接的文档(第二个链接)中剪切和发布,下面显示了如何将 GET 发送到 API 以及如何设置成功和失败的处理程序,以及处理请求 header 和查询参数——这个应该有你需要的一切。

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.0-RC2' )
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*

def http = new HTTPBuilder( 'http://ajax.googleapis.com' )

// perform a GET request, expecting JSON response data
http.request( GET, JSON ) {
  uri.path = '/ajax/services/search/web'
  uri.query = [ v:'1.0', q: 'Calvin and Hobbes' ]

  headers.'User-Agent' = 'Mozilla/5.0 Ubuntu/8.10 Firefox/3.0.4'

  // response handler for a success response code:
  response.success = { resp, json ->
    println resp.statusLine

    // parse the JSON response object:
    json.responseData.results.each {
      println "  ${it.titleNoFormatting} : ${it.visibleUrl}"
    }
  }

  // handler for any failure status code:
  response.failure = { resp ->
    println "Unexpected error: ${resp.statusLine.statusCode} : ${resp.statusLine.reasonPhrase}"
  }
}

您可能还想查看 this , 对于一些漂亮的技巧。有一个带有 POST 方法的示例。

关于api - Grails 如何发布到别人的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6487112/

相关文章:

java - 如何通过JMX获取James Server中注册的用户列表

angular - 尝试使用字符串作为有效负载执行 http.post 请求

sql-server - 在 MSSQL 触发器中使用 POST 方法

javascript - 当被过滤的数组包含 JSON 数据时,为什么我会收到 'cannot read property ' filter' of undefined' ?

docker - Keyvault 无法在通过 Visual Studio 中的 Docker 运行的应用程序中运行

javascript - React 类方法未定义 no-undef

grails - 在页面创建时将值插入到 grails createlink 参数中

javascript - instagram/media/recent api 仅获取 lastone 图像

grails - 如何在列表中推送号码

reactjs - 在react与redux中,如何进行post请求