Using Groovy Services to Make GET Calls

Using grails.converters.JSON we can easily make GET calls to the REST services of ScienceBase.

The Basics

Create your URL as a groovy URL with all of your fields correctly set (when using JSON make sure you set "format=json" as one of your fields). Then call .getText() on your URL object to get the returned text and JSON.parse to parse your returned text into a JSON object. The returned JSON object is basically just a Map with key/value pairs.

Example

Here is an example of search done in EERMA:

String search = "oil"
String sciencebase = "http://www.sciencebase.gov/catalog/"
List<String> fields = ["id", "title", "hasChildren", "facets", "files"]

def url = sciencebase + "items"

def fields = [
     sort: "title",
     s: "Search",
     format: "json",
     folderId: "<folderIdOfEERMA>",
     q: search,
     fields: fields.join(',')
]

def returnedJSON = JSON.parse("${url}?${getQueryString(fields)}".toURL().getText())
def items = returnedJSON.items as List

def getQueryString(Map m) {
    return m.collect {k,v->
        "${k.encodeAsURL()}=${v.encodeAsURL()}"
    }.join("&")
}