restbuilder example rest groovy httpbuilder

example - Groovy incorporado en el cliente REST/HTTP?



jira rest api example (7)

El más simple tiene que ser:

def html = "http://google.com".toURL().text

Escuché que Groovy tiene un cliente REST / HTTP incorporado. La única biblioteca que puedo encontrar es HttpBuilder , ¿ es esto?

Básicamente, estoy buscando una forma de hacer HTTP GET desde dentro del código Groovy sin tener que importar ninguna biblioteca (si es posible). Pero dado que este módulo no parece ser parte del núcleo de Groovy, no estoy seguro de si tengo la lib derecha aquí.


Native Groovy GET y POST

// GET def get = new URL("https://httpbin.org/get").openConnection(); def getRC = get.getResponseCode(); println(getRC); if(getRC.equals(200)) { println(get.getInputStream().getText()); } // POST def post = new URL("https://httpbin.org/post").openConnection(); def message = ''{"message":"this is a message"}'' post.setRequestMethod("POST") post.setDoOutput(true) post.setRequestProperty("Content-Type", "application/json") post.getOutputStream().write(message.getBytes("UTF-8")); def postRC = post.getResponseCode(); println(postRC); if(postRC.equals(200)) { println(post.getInputStream().getText()); }


No creo que http-builder sea un módulo Groovy, sino una API externa sobre apache http-client, por lo que es necesario importar clases y descargar un montón de API. Es mejor usar Gradle o @Grab para descargar el jar y las dependencias:

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

Nota: dado que el sitio CodeHaus se cayó, puede encontrar el JAR en ( https://mvnrepository.com/artifact/org.codehaus.groovy.modules.http-builder/http-builder )


Puede aprovechar las características de Groovy como con (), las mejoras de URLConnection y los getters / setters simplificados:

OBTENER:

String getResult = new URL(''http://mytestsite/bloop'').text

ENVIAR:

String postResult ((HttpURLConnection)new URL(''http://mytestsite/bloop'').openConnection()).with({ requestMethod = ''POST'' doOutput = true setRequestProperty(''Content-Type'', ''...'') // Set your content type. outputStream.withPrintWriter({printWriter -> printWriter.write(''...'') // Your post data. Could also use withWriter() if you don''t want to write a String. }) // Can check ''responseCode'' here if you like. postResult = inputStream.text // Using ''inputStream.text'' because ''content'' will throw an exception when empty. })

Tenga en cuenta que la POST se iniciará cuando intente leer un valor de HttpURLConnection, como responseCode , inputStream.text o getHeaderField(''...'') .


Si sus necesidades son simples y desea evitar la adición de dependencias adicionales, es posible que pueda utilizar los métodos getText() que Groovy agrega a la clase java.net.URL :

new URL("http://.com").getText() // or new URL("http://.com") .getText(connectTimeout: 5000, readTimeout: 10000, useCaches: true, allowUserInteraction: false, requestProperties: [''Connection'': ''close''])

Si espera recuperar datos binarios, también hay una funcionalidad similar proporcionada por los métodos newInputStream() .


HTTPBuilder es eso. Muy fácil de usar

import groovyx.net.http.HTTPBuilder def http = new HTTPBuilder(''https://google.com'') def html = http.get(path : ''/search'', query : [q:''waffles''])

Es especialmente útil si necesita manejo de errores y, en general, más funcionalidades que solo obtener contenido con GET.


import groovyx.net.http.HTTPBuilder; public class HttpclassgetrRoles { static void main(String[] args){ def baseUrl = new URL(''http://test.city.com/api/Cirtxyz/GetUser'') HttpURLConnection connection = (HttpURLConnection) baseUrl.openConnection(); connection.addRequestProperty("Accept", "application/json") connection.with { doOutput = true requestMethod = ''GET'' println content.text } } }