Blog API
This is a example application showing how to use grape to create a simple API. This sample show cases how to create a simple API without authentication, caching, custom errors, entities and such other things to build a robust public API.
I wrote the sample because I was unable to find a sample to cover the basics of grape.
Environment
The sample was developed using the following software. If your software is different, the sample may still work, but there is no guarantee.
- Rails 3.2.8
- ruby 1.9.3p194
- OS X 10.8.1 (aka Mountain Lion)
- Grape (0.2.1)
Setup
Install the gems
bundle install
Create and migrate the database
rake db:migrate
Seed the database
rake db:seed
Running the sample
You can run the server using the built-in rails server
rails server
Usage
Getting all the weblogs
curl -i http://localhost:3000/weblogs
Creating a weblog
curl -d '{"title": "Dummy"}' -X POST -H Content-Type:application/json http://localhost:3000/weblogs
Deleting a weblog
curl -X DELETE http://localhost:3000/weblogs/1
Updating a weblog
curl -d '{"title": "Another Weblog"}' -X PUT -H Content-Type:application/json http://localhost:3000/weblogs/2
Get the posts of the weblog #2
curl -i http://localhost:3000/weblogs/2/posts
Create a post in a weblog #2
curl -d '{"title": "Dummy"}' -X POST -H Content-Type:application/json http://localhost:3000/weblogs/2/posts
Delete all posts in weblog #2
curl -X DELETE http://localhost:3000/weblogs/2/posts
Updating a post
curl -d '{"title": "Dummy"}' -X PUT -H Content-Type:application/json http://localhost:3000/posts/2
Delete all posts
curl -X DELETE http://localhost:3000/posts
Delete a specific post
curl -X DELETE http://localhost:3000/posts/2
Delete all comments from post #2
curl -X DELETE http://localhost:3000/posts/2/comments
Create a comment in a post #2
curl -d '{"name": "Bob"}' -X POST -H Content-Type:application/json http://localhost:3000/posts/2/comments
Get a comment #2
curl http://localhost:3000/comments/2
Delete a comment #2
curl -X DELETE http://localhost:3000/comments/2
Delete all comments
curl -X DELETE http://localhost:3000/comments
Updating comment #2
curl -d '{"name": "Sam"}' -X PUT-H Content-Type:application/json http://localhost:3000/comments/2