Creating A Book Listing - Planning
Last updated
Last updated
Refer back to section for the API endpoint specifications.
Referring back to the sections under chapter 3, and , we can continue to build upon our books
namespace. In fact we'll be using that for the rest of the chapter.
We'll use POST
as our method verb of choice since we are creating a resource, and this is what we'll be sticking with as our route name.
POST /api/v1/books
From the specifications, these are the fields that will be input to us by the user.
title
description
price
author
datePublished
This middleware part of this feature will be quite simple. Recall in the previous chapter, when we went over the section . We built ourselves a nice little helper that will let us guard against requests from users who are not authenticated in our application. We'll be reusing that middleware for this feature and for the rest of the remaining sections of this chapter.
From the looks of the specification, it would seem like we will need to perform the following validation rules for each of the fields.
title
- required.
description
- required.
price
- required, numeric, minimum number is 1.
author
- required.
datePublished
- required, valid date format.
If you've been paying attention in the previous 2 chapters of the book, you'll probably guess what 3 files we are going to create.
From the specifications, it looks like we will need the following book entity in our domain layer.
bookModel
title
description
price
author
datePublished
We'll also need some sort of way to make a query to the database to insert the book in, so we'll create a bookRepository
layer with the method create()
to do so.
bookRepository
create()
On top of that, our controller will call a service to createBook()
, in this case, it will be the bookService
which will use the userRepository
layer.
bookService
createBook()
This is a rough outline of how we are going to be implementing these functions, we'll take a deeper dive at the implementations in the next section of this chapter.
None.
There are 3 possible responses that can be output with this endpoint.
The first is the authentication middleware that we'll be adding in.
The second has to deal with whether or not the client has put in the correct fields to pass the form validation.
The third, of course, is the successful scenario.