Loading repository data…
Loading repository data…
aldyardnsyh / repository
Bookshelf API adalah proyek submission "Belajar Back-End Pemula dengan JavaScript" pada modul ajar Dicoding yang berfungsi untuk menyimpan, menampilkan, memperbarui, dan menghapus data buku menggunakan Node.js dan Hapi.js.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Bookshelf API adalah proyek backend sederhana yang dibuat menggunakan Node.js dan Hapi.js. Proyek ini dibuat untuk memenuhi persyaratan submission Belajar Back-End Pemula dengan JavaScript Dicoding. API ini memungkinkan pengguna untuk menambahkan, melihat, memperbarui, dan menghapus data buku, serta memenuhi standar RESTful API.
Fitur yang disediakan oleh API tersebut mencakup:
Proyek ini dibangun menggunakan teknologi berikut:
Untuk menjalankan proyek ini, ikuti langkah-langkah berikut:
git clone https://github.com/aldyardnsyh/bookshelf-api-dicoding.git
cd bookshelf-api-dicoding
npm install
npm run start
Berikut adalah daftar fitur yang tersedia beserta contoh endpoint, request body, dan respons yang dihasilkan:
{
"name": string,
"year": number,
"author": string,
"summary": string,
"publisher": string,
"pageCount": number,
"readPage": number,
"reading": boolean
}
{
"status": "success",
"message": "Buku berhasil ditambahkan",
"data": {
"bookId": "wtLxqk3MKoAuzLQX"
}
}
{
"status": "fail",
"message": "Gagal menambahkan buku. Mohon isi nama buku"
}
{
"status": "fail",
"message": "Gagal menambahkan buku. readPage tidak boleh lebih besar dari pageCount"
}
{
"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"
}
]
}
Jika belum terdapat buku yang dimasukkan, server akan merespons dengan array books kosong seperti berikut:
{
"status": "success",
"data": {
"books": []
}
}
{
"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"
}
}
}
Bila buku dengan id yang dilampirkan oleh client tidak ditemukan, maka server harus mengembalikan respons dengan:
{
"status": "fail",
"message": "Buku tidak ditemukan"
}
{
"status": "fail",
"message": "Gagal memperbarui buku. Mohon isi nama buku"
}
Client melampirkan nilai properti readPage yang lebih besar dari nilai properti pageCount. Bila hal ini terjadi, maka server akan merespons dengan:
{
"status": "fail",
"message": "Gagal memperbarui buku. readPage tidak boleh lebih besar dari pageCount"
}
Id yang dilampirkan oleh client tidak ditemukkan oleh server. Bila hal ini terjadi, maka server akan merespons dengan:
{
"status": "fail",
"message": "Gagal memperbarui buku. Id tidak ditemukan"
}
{
"status": "success",
"message": "Buku berhasil diperbarui"
}
Bila id dimiliki oleh salah satu buku, maka buku tersebut harus dihapus dan server mengembalikan respons berikut,
{
"status": "success",
"message": "Buku berhasil dihapus"
}
Bila id yang dilampirkan tidak dimiliki oleh buku manapun, maka server harus mengembalikan respons berikut:
{
"status": "fail",
"message": "Buku gagal dihapus. Id tidak ditemukan"
}