In this exercise, you are going to practice building a REST API to a specification. The API can handle GET and POST requests to different endpoints.
NB: For this exercise, the API spec does not include error responses.
- Build an Express application that handles a GET and a POST request and returns JSON
- Explain how to access the request parameters from an Express app
- Build an API to a specification
- 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 use route parameters in express to build a REST API for the /users
endpoints. To process json in the request body of POST requests you will need to use the express json middleware.
- Implement the
films
andbooks
endpoints for this API according to the API spec
- Use req.query to implement this update 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 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 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"
}
}