NAME

Jifty::Manual::TutorialRest - Web Services

DESCRIPTION

This builds on Jifty::Manual::Tutorial, so make sure you have a running jifty that roughly resembles the step-by-step from there.

SETUP

You must add this to your site_config.yml

framework:
  Plugins:
    - REST: {}

See Jifty::Plugin::REST.

The commands assume that you have LWP installed with the GET alias. If not, you'll need to use the longhand lwp-request -m GET, or curl, or your browser.

help

Make sure it is working:

$ GET http://localhost:8888/=/help

Accessing resources:
...

You should see some text describing the services, not html (that's longhand for 404.) Check the config and restart the server.

GET

Just list the models.

$ GET http://localhost:8888/=/model.yml
---
- MyWeblog.Model.Post

List the Post schema.

$ GET http://localhost:8888/=/model/Post.yml
---
body:
  label: Content
  name: body
  readable: 1
  sort_order: 1
  type: text
  writable: 1
id:
  mandatory: 1
  name: id
  readable: 1
  type: serial
  writable: 0
title:
  default: Untitled post
  label: Title
  name: title
  readable: 1
  sort_order: 0
  type: text
  writable: 1

You did make some posts, right?

$ GET http://localhost:8888/=/model/Post/id.yml
---
- 1
- 2

Dump the data:

$ GET http://localhost:8888/=/model/Post/id/1.yml
---
body: 'This is my post, the content of which is this, which is mine.'
id: 1
title: my first post

$ GET http://localhost:8888/=/model/Post/id/2.yml
---
body: "Content of another post.  Got to go, the cat's on fire."
id: 2
title: post deux

POST

TODO not working

Actually, it looks like it is not supposed to work this way. Why not?

$ echo '---
body: "A post via web services"
id: 3
title: "posting from the command-line"
' | lwp-request -m POST http://localhost:8888/=/model/Post.yml
POST http://localhost:8888/=/model/Post/id/3.yml --> 404 Not Found

PUT

TODO not working

$ echo '---
title: "posting from the cli"
' | lwp-request -m PUT http://localhost:8888/=/model/Post/3.yml
500 Can't read entity body: Connection reset by peer

DELETE

$  lwp-request -m DELETE http://localhost:8888/=/model/Post/id/3.yml
---
content: {}
error: ~
field_errors: {}
field_warnings: {}
message: Deleted
success: 1