WebApp to track reading activities
- API dapat menampilkan semua buku
- Method : GET
- URL : /books
- Server harus mengembalikan response
- status code : 200
- response body :
{
"status": "success",
"data": {
"books": [
{
"id": "Qbax5Oy7L8WKf74l",
"name": "Buku A",
"publisher": "Dicoding Indonesia"
},
{
"id": "1L7ZtDUFeGs7VlEt",
"name": "Buku B",
"publisher": "Dicoding Indonesia"
},
{
"id": "K8DZbfI-t3LrY7lD",
"name": "Buku C",
"publisher": "Dicoding Indonesia"
}
]
}
}
- API dapat menampilkan detail buku
- Method : GET
- URL : \books{bookid}
Bila buku dengan id yang dilampirkan pada client tidak ditemukan, maka server merespon dengan
- Status code : 404
- Response Body :
{
"status": "fail",
"message": "Buku tidak ditemukan"
}
Bila buku dengan id terlampir,
- Status code : 200
- Response body:
{
"status": "success",
"data": {
"book": {
"id": "aWZBUW3JN_VBE-9I",
"name": "Buku A Revisi",
"year": 2011,
"author": "Jane Doe",
"summary": "Lorem Dolor sit Amet",
"publisher": "Dicoding",
"pageCount": 200,
"readPage": 26,
"finished": false,
"reading": false,
"insertedAt": "2021-03-05T06:14:28.930Z",
"updatedAt": "2021-03-05T06:14:30.718Z"
}
}
}
- API dapat menyimpan buku
API menyimpan buku pada route
- Method : POST
- URL : /books
- Body Request
{
"name": string,
"year": number,
"author": string,
"summary": string,
"publisher": string,
"pageCount": number,
"readPage": number,
"reading": boolean
}
Objek buku yang disimpan pada server
{
"id": "Qbax5Oy7L8WKf74l",
"name": "Buku A",
"year": 2010,
"author": "John Doe",
"summary": "Lorem ipsum dolor sit amet",
"publisher": "Dicoding Indonesia",
"pageCount": 100,
"readPage": 25,
"finished": false,
"reading": false,
"insertedAt": "2021-03-04T09:11:44.598Z",
"updatedAt": "2021-03-04T09:11:44.598Z"
}
- id bernilai unik. Dapat menggunakan nanoid
- finished properti boolean yang menentukan apakah buku sudah selesai dibaca. finished didapatkan dari observasi pageCount === readPage
- insertedAt merupakan properti tanggal dimasukannya buku. Dapat menggunakan method Date.toISOString()
- updatedAt merupakan properti menampung tanggal diperbarui buku. Awal masuk, sama dengan insertedAt
Server merespon gagal jika
- Client tidak melampirkanname pada request body. Maka
- Status Code : 400
- Response body
{
status: 'fail',
message: "Gagal menambahkan buku. Mohon isi nama buku"
}
- Client melampirkan properti readPage yang lebih besar daripada pageCount
- Status code = 400
- Response body
{
status: 'fail',
message: "Gagal menambahkan buku. readPage tidak boleh lebih besar dari pageCount"
}
- server gagal memasukkan buku karena alasan umum, maka server merespon dengan
- status code : 500
- response body
{
"status": "error",
"message": "Buku gagal ditambahkan"
}
Bila buku berhasil ditambahkan
- Status code 200
- response body
{
"status": "success",
"message": "Buku berhasil ditambahkan",
"data": {
"bookId": "1L7ZtDUFeGs7VlEt"
}
}
- API dapat menghapus buku
Menghapus book berdasarkan id yang diberikan
- Method : DELETE
- URL : /books/{bookid}
Bila id tidak ditemukan maka
- Status code : 404
- Response body :
{
"status": "fail",
"message": "Buku gagal dihapus. Id tidak ditemukan"
}
Bila id ditemukan, maka
- Status code : 200
- Response body
{
"status": "success",
"message": "Buku berhasil dihapus"
}
- API dapat mengubah data buku
Harus mengubah data buku berdasarkan id
- Method : PUT
- URL : /books/{bookid}
- Body Request :
{
"name": string,
"year": number,
"author": string,
"summary": string,
"publisher": string,
"pageCount": number,
"readPage": number,
"reading": boolean
}
Server harus merespon gagal jika :
- Client tidak melampirkanname pada request body. Maka
- Status Code : 400
- Response body
{
status: 'fail',
message: "Gagal memperbarui buku. Mohon isi nama buku"
}
- Client melampirkan properti readPage yang lebih besar daripada pageCount
- Status code = 400
- Response body
{
status: 'fail',
message: "Gagal menambahkan buku. readPage tidak boleh lebih besar dari pageCount"
}
- Bila id tidak dapat ditemukan
- Status code : 404;
- Response body
{
"status": "fail",
"message": "Gagal memperbarui buku. Id tidak ditemukan"
}
bila buku berhasil diperbarui
- Status code : 200
- Response body
{
"status": "success",
"message": "Buku berhasil diperbarui"
}