GitHub - xtremelabs/UltimateDeveloperEvent-Server-Rails: Ultimate Developer Event Server for Demo application.

UltimateDeveloperEvent-Server-Rails -==================================

Ultimate Developer Event Server for Demo application.

REST API example application

This is a bare-bones example of a Sinatra application providing a REST API to a DataMapper-backed model.

The entire application is contained within the app.rb file.

Install

Run the app

REST API

The REST API to the example app is described below.

Get list of Devices

Request

GET /devices/

curl -i -H 'Accept: application/json' http://localhost:7000/devices/

Response

HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:30 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 2

[]

Create a new Device

Request

POST /devices/

curl -i -H 'Accept: application/json' -d 'name=Foo&status=new' http://localhost:7000/device

Get a specific Device

Request

GET /devices/id

curl -i -H 'Accept: application/json' http://localhost:7000/devices/1

Get a non-existent Device

Request

GET /devices/id

curl -i -H 'Accept: application/json' http://localhost:7000/devices/9999

Response

HTTP/1.1 404 Not Found
Date: Thu, 24 Feb 2011 12:36:30 GMT
Status: 404 Not Found
Connection: close
Content-Type: application/json
Content-Length: 35

{"status":404,"reason":"Not found"}

Change a Device's state

Request

PUT /devices/:id/status/changed

curl -i -H 'Accept: application/json' -X PUT http://localhost:7000/devices/1/status/changed

Response

HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:31 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 40

{"id":1,"name":"Foo","status":"changed"}

Change a Device

Request

PUT /devices/:id

curl -i -H 'Accept: application/json' -X PUT -d 'name=Foo&status=changed2' http://localhost:7000/devices/1

Response

HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:31 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 41

{"id":1,"name":"Foo","status":"changed2"}

Change a Device using the _method hack

Request

POST /devices/:id?_method=POST

curl -i -H 'Accept: application/json' -X POST -d 'name=Baz&_method=PUT' http://localhost:7000/devices/1

Response

HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:32 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 41

{"id":1,"name":"Baz","status":"changed4"}

Delete a Device

Request

DELETE /devices/id

curl -i -H 'Accept: application/json' -X DELETE http://localhost:7000/devices/1/

Response

HTTP/1.1 204 No Content
Date: Thu, 24 Feb 2011 12:36:32 GMT
Status: 204 No Content
Connection: close