Install all gems:
$ bundle installUpdate the database with new data model:
$ rake db:migrateFeed the database with default seeds:
$ rake db:seedStart the web server on http://localhost:3000 by default:
$ rails serverRun all RSpec tests and Rubocop:
$ rake test| HTTP verbs | Paths | Used for |
|---|---|---|
| POST | /register | Create a user |
| POST | /login | Authenticate a user |
| GET | /posts | List all posts |
| GET | /posts/:post_id | Show a single post |
| POST | /posts | Create a post |
| PUT | /posts/:post_id | Update a post |
| DELETE | /posts/:post_id | Delete a post |
| GET | /posts/:post_id/comments | List all comments of a post |
| GET | /posts/:post_id/comments/:comment_id | Show a single comment |
| POST | /posts/:post_id/comments | Create a comment |
| PUT | /posts/:post_id/comments/:comment_id | Update a comment |
| DELETE | /posts/:post_id/comments/:comment_id | Delete a comment |
Create a new user:
$ curl -X POST -H 'Content-type: application/json' -d '{"email": "testuser@email.com", "password": "testuser123"}' localhost:3000/registerAuthenticate a user:
$ curl -X POST -H 'Content-type: application/json' -d '{"email": "testuser@email.com", "password": "testuser123"}' localhost:3000/loginOn successful login, {"auth_token": <token>} will be returned. This token will be expired after 24 hours.
In order to access the posts and comments, add -H 'Authorization: <token>' to the header of every request for CRUD operations.
The create, update and delete actions can only be executed by users authorized on admin. A default admin user is definded in db/seeds.rb. After seeding the database, {"email": "admin@email.com", "password": "admin123"} can be used to login as an admin.
Create a new post:
$ curl -X POST -H 'Content-type: application/json' -d '{"title": "My title", "content": "My content"}' localhost:3000/postsCreate a new comment:
$ curl -X POST -H 'Content-type: application/json' -d '{"name": "YuKitAs", "message": "My message"}' localhost:3000/posts/1/commentsThe name field is optional with default value anonym.
Update an existing post by id:
$ curl -X PUT -H 'Content-type: application/json' -d '{"title": "My new title", "content": "My new content"}' localhost:3000/posts/1Update an existing comment by id:
$ curl -X PUT -H 'Content-type: application/json' -d '{"name": "YuKitAs", "message": "My new message"}' localhost:3000/posts/2/comments/1Delete an existing post by id:
$ curl -X DELETE localhost:3000/posts/1All the comments of this post will be deleted as well.
Delete an existing comment by id:
$ curl -X DELETE localhost:3000/posts/2/comments/1