Grails如何向他人的API发送POST请求

5

我正在编写一个Grails应用程序,我希望控制器能够使用POST方法访问其他API,然后使用响应来生成用户看到的页面。但是我无法找到有关在Grails中发布到另一个页面并接收响应的正确术语。如果您能提供教程或解答,例如“这被称为...”,我将不胜感激。


什么是API协议?是SOAP、JSON还是普通的HTTP协议,并遵循一些约定? - Victor Sergienko
1个回答

8
看起来你正在集成某种RESTful web服务。有一个REST客户端插件,这里链接here
另外,不使用插件也很容易做到这一点,这里链接here
强烈建议将你的控制器仅作为控制器。用类似OtherApiService或某种实用程序来抽象你与外部服务的接口。将所有与该外部服务通信的代码放在一个地方;这样你就可以模拟你的集成组件,并使其他所有测试变得简单。如果你将其作为一个服务来完成,那么你还可以扩展,比如说,如果你想开始在自己的应用程序中存储来自API的一些数据。
无论如何,从链接的文档(第二个链接)中剪切和粘贴,以下显示如何向API发送GET请求以及如何设置成功和失败处理程序,以及处理请求标头和查询参数--这应该是你需要的所有。
@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}"
  }
}

你也许想要查看这个链接,里面有一些巧妙的技巧。它包含了一个使用POST方法的示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接