In this exercise, you are going to extend the REST APIs you have been building to handle DELETE and PUT requests. You will also learn how to make your route handling more modular in express using express.Router.
- Use Express.Router to encapsulate routing behavior for different resources
- Explain and build a CRUD RESTful JSON API including PUT and DELETE
- Fork this repository
- Clone the forked repository onto your local machines
- In the root directory, type
npm install
, which installs dependencies for the project - Finally, type
npm start
, which starts a development server that will reload whenever you make any changes to source files
Your instructor will demonstrate how to encapsulate route parameters for the /users
endpoints using express.Router and also implement the PUT
and DELETE
endpoints for user.
- Implement the
users
,films
andbooks
endpoints for this API according to the API spec
- Implement these updates to the API spec
Example Request
curl localhost:3030/users
Example Response
{
"users": [
{
"id": 1,
"email": "[email protected]"
},
{
"id": 2,
"email": "[email protected]"
},
{
"id": 3,
"email": "[email protected]"
}
]
}
Example Request
curl localhost:3030/users/2
Example Response
{
"user": {
"id": 2,
"email": "[email protected]"
}
}
For Windows users, replace the \
with ^
Example Request
curl -X POST localhost:3030/users \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]"}'
Example Response
{
"user": {
"email": "[email protected]",
"id": 4
}
}
Example Request
curl -X DELETE localhost:3030/users/4
Example Response
{
"user": {
"email": "[email protected]",
"id": 4
}
}
Example Request
curl -X PUT localhost:3030/users/4 \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]"}'
Example Response
{
"user": {
"email": "[email protected]",
"id": 4
}
}
Example Request
curl localhost:3030/films
Example Response
{
"films": [
{
"id": 1,
"title": "Bonnie and Clyde",
"director": "Arthur Penn"
},
{
"id": 2,
"title": "Reservoir Dogs",
"director": "Quentin Tarantino"
},
{
"id": 3,
"title": "Inception",
"director": "Christopher Nolan"
},
{
"id": 4,
"title": "Django Unchained",
"director": "Quentin Tarantino"
}
]
}
Example Request
curl localhost:3030/films/3
Example Response
{
"film": {
"id": 3,
"title": "Inception",
"director": "Christopher Nolan"
}
}
For Windows users, replace the \
with ^
Example Request
curl -X POST localhost:3030/films \
-H 'Content-Type: application/json' \
-d '{"title":"Maleficent","director":"Robert Stromberg"}'
Example Response
{
"film": {
"id": 5,
"title": "Maleficent",
"director": "Robert Stromberg"
}
}
Example Request
curl -X DELETE localhost:3030/films/5
Example Response
{
"film": {
"id": 5,
"title": "Maleficent",
"director": "Robert Stromberg"
}
}
Example Request
curl -X PUT localhost:3030/films/5 \
-H 'Content-Type: application/json' \
-d '{"title":"Maleficent","director":"Robert Stromberg"}'
Example Response
{
"film": {
"id": 5,
"title": "Maleficent",
"director": "Robert Stromberg"
}
}
Example Request
curl localhost:3030/books
Example Response
{
"users": [
{
"id": 1,
"title": "1984",
"type": "fiction",
"author": "George Orwell"
},
{
"id": 2,
"title": "Life of Pi",
"type": "fiction",
"author": "Yann Martel"
},
{
"id": 3,
"title": "How to Win Friends and Influence People",
"type": "non-fiction",
"author": "Dale Carnegie"
},
{
"id": 4,
"title": "The Lean Startup",
"type": "non-fiction",
"author": "Eric Reis"
}
]
}
Example Request
curl localhost:3030/books/1
Example Response
{
"book": {
"id": 1,
"title": "1984",
"type": "fiction",
"author": "George Orwell"
}
}
For Windows users, replace the \
with ^
Example Request
curl -X POST localhost:3030/books \
-H 'Content-Type: application/json' \
-d '{"title":"The Name Of The Wind","type":"fantasy", "author":"Patrick Rothfuss"}'
Example Response
{
"book": {
"id": 4,
"title": "The Name Of The Wind",
"type": "fantasy",
"author": "Patrick Rothfuss"
}
}
Example Request
curl -X DELETE localhost:3030/books/4
Example Response
{
"book": {
"id": 4,
"title": "The Name Of The Wind",
"type": "fantasy",
"author": "Patrick Rothfuss"
}
}
Example Request
curl -X PUT localhost:3030/books/4 \
-H 'Content-Type: application/json' \
-d '{"title":"The Name Of The Wind","type":"fantasy", "author":"Patrick Rothfuss"}'
Example Response
{
"book": {
"id": 4,
"title": "The Name Of The Wind",
"type": "fantasy",
"author": "Patrick Rothfuss"
}
}