Jifty::Manual::TutorialRest(3) 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