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/=/helpAccessing 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: Contentname: bodyreadable: 1sort_order: 1type: textwritable: 1id:mandatory: 1name: idreadable: 1type: serialwritable: 0title:default: Untitled postlabel: Titlename: titlereadable: 1sort_order: 0type: textwritable: 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: 1title: 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: 2title: 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: 3title: "posting from the command-line"' | lwp-request -m POST http://localhost:8888/=/model/Post.ymlPOST 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.yml500 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: Deletedsuccess: 1