Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A Linked Data micro web framework for Groovy (Ratpack fork)

branch: master

This branch is 0 commits ahead and 0 commits behind master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 sample
Octocat-spinner-32 scripts
Octocat-spinner-32 src
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE.txt
Octocat-spinner-32 README.md
Octocat-spinner-32 build.gradle
README.md

NOTE: This repo and the original rackpack is depracated, given the new [Ratpack Framework(http://www.ratpack.io/).

I'll keep this repo up for historical purposes. This versoin was certainly uesful in several prototyping use cases. A new version of a ratpack plugin for Groovy SPARQL will be in the works to take its place.

Linked Ratpack

A Linked Data micro web framework for Groovy, based on Ratpack

Linked Ratpack takes the excellent Ratpack and adds Groovy SPARQL, and capabilities to easily generate RDF, query SPARQL endpoints, and de-reference URIs

Intro and example: http://linkedjava.blogspot.com/2011/07/linked-data-microframework-linked.html

See the sample.groovy file for how to use the Linked Data aspects.

Otherwise, it is the same as Ratpack

Below is the original Ratpack documentation.

Enjoy!


Ratpack is inspired by the excellent Sinatra framework for Ruby, and aims to make Groovy web development more classy.

Requirements

Groovy 1.7.1+ and Gradle (to build and fetch other dependencies).

Getting Started

Ratpack is still very beta. But, you can start using it right now.

To easily run your app from the command line, build the Ratpack project and add the binary to your PATH:

gradle buildDistro
export PATH=$PATH:`pwd`/build/ratpack/bin

Here's a basic "Hello, World" app:

get("/") {
    "Hello, World!"
}

If you save the above code in hello.groovy and run it on the command line, it will start your app in Jetty on port 5000:

$ ratpack hello.groovy 
Starting Ratpack app with config:
[port:5000]
2011-05-28 07:44:51.408:INFO::Logging to STDERR via org.mortbay.log.StdErrLog
2011-05-28 07:44:51.573:INFO::jetty-6.1.24
2011-05-28 07:44:52.169:INFO::Started SocketConnector@0.0.0.0:5000
...

You can also use the 'runapp.groovy' script to auto restart your app when there are changes in the directory.

$ groovy scripts/runapp.groovy appdir/hello.groovy appdir

POST and Other Verbs

post("/submit") {
    // handle form submission here
}

put("/some-resource") {
    // create the resource
}

delete("/some-resource") {
    // delete the resource
}

register("propfind", "/some-resource") {
    // you can register your own verbs
}

register(["get", "post"], "/formpage") {
    // you can register multiple verbs to the same handler
}

URL Parameters

You can capture parts of the URL to use in your handler code using the colon character. Any parameters that are captured are stored in the urlparams map.

get("/person/:personid") {
    "This is the page for person ${urlparams.personid}"
}

get("/company/:companyname/invoice/:invoiceid") {
    def company = CompanyDAO.getByName(urlparams.companyname)
    def invoice = company.getInvoice(urlparams.invoiceid)
    // you get the idea
}

GET and POST Parameters

Parameters in the query string or passed in via a POST request are available in the params map.

get("/search") {
    def results = SearchEngine.search(params.q)
    // etc.
}

Templates

Render templates using the render method. To specifiy where to load template files from, set the templateRoot setting. If the file isn't found in the template root, the renderer will try to load it as a resource from the classpath.

set 'templateRoot', 'myapp/templates'

get("/") {
    render "homepage.html"
}

You can also pass in a map to use in the template.

get("/page/:pagename") {
    render "page.html", [name: urlparams.pagename]
}

The template syntax is the same as Groovy's SimpleTemplateEngine.

The Development Server

The default port is 5000, but you can specify another if you wish by adding the following to your app:

set 'port', 8080
Something went wrong with that request. Please try again.