You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 18-kriteria-proyek.js
+134-2
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@
5
5
// http://notesapp-v1.dicodingacademy.com/
6
6
// namun aplikasi tsb tidak bs digunakan, karna blm terhubung dg RESTful API
7
7
8
-
// kriteria 1- web server dapat menyimpan catatan
8
+
// -- kriteria 1- web server dapat menyimpan catatan --
9
9
// menyimpan tanpa perlu ke server, ckup ke memory server dalam bentuk array
10
10
// berikut struktur objek catatannya :
11
11
/**
@@ -59,4 +59,136 @@
59
59
"status": "error",
60
60
"message": "Catatan gagal untuk ditambahkan"
61
61
}
62
-
*/
62
+
*/
63
+
64
+
65
+
// -- Kriteria 2- Web Server dapat menampilkan catatan --
66
+
// web server dapat mengirimkan seluruh data notes yang tersimpan
67
+
// ketika client melakukan permintaan pada path '/notes' dengan metod 'GET' maka server harus mengembalikan status code 200 (OK)
68
+
// serta mengembalikan seluruh data notes dalam bentuk array menggunakan JSON seperti berikut:
69
+
/**
70
+
* {
71
+
"status": "success",
72
+
"data": {
73
+
"notes": [
74
+
{
75
+
"id":"notes-V1StGXR8_Z5jdHi6B-myT",
76
+
"title":"Catatan 1",
77
+
"createdAt":"2020-12-23T23:00:09.686Z",
78
+
"updatedAt":"2020-12-23T23:00:09.686Z",
79
+
"tags":[
80
+
"Tag 1",
81
+
"Tag 2"
82
+
],
83
+
"body":"Isi dari catatan 1"
84
+
},
85
+
{
86
+
"id":"notes-V1StGXR8_98apmLk3mm1",
87
+
"title":"Catatan 2",
88
+
"createdAt":"2020-12-23T23:00:09.686Z",
89
+
"updatedAt":"2020-12-23T23:00:09.686Z",
90
+
"tags":[
91
+
"Tag 1",
92
+
"Tag 2"
93
+
],
94
+
"body":"Isi dari catatan 2"
95
+
}
96
+
]
97
+
}
98
+
}
99
+
*
100
+
*/
101
+
102
+
// jika belum ada catatan satu pun pada array, server bs mengembalikan data notes dengan nilai array kosong sbb:
103
+
/**
104
+
* {
105
+
"status": "success",
106
+
"data": {
107
+
"notes": []
108
+
}
109
+
}
110
+
*/
111
+
112
+
// selain itu, client bs melakukan permintaan utk mendapakan catatan secara spesifik menggunakan id melalui path '/notes/{id}' dengan metod 'GET'
113
+
// server harus mengembalikan status code 200 (OK) serta nilai satu objek catatan dalam bentuk JSON sbb:
114
+
/**
115
+
* {
116
+
"status": "success",
117
+
"data": {
118
+
"note": {
119
+
"id":"notes-V1StGXR8_Z5jdHi6B-myT",
120
+
"title":"Catatan 1",
121
+
"createdAt":"2020-12-23T23:00:09.686Z",
122
+
"updatedAt":"2020-12-23T23:00:09.686Z",
123
+
"tags":[
124
+
"Tag 1",
125
+
"Tag 2"
126
+
],
127
+
"body":"Isi dari catatan 1"
128
+
}
129
+
}
130
+
}
131
+
*/
132
+
133
+
// bila klien melampirkan id catatan yang tidak ditemukan, server harus merespon dg status code 404 dan data dalam bentuk JSON seperti ini:
134
+
135
+
/**
136
+
* {
137
+
"status": "fail",
138
+
"message": "Catatan tidak ditemukan"
139
+
}
140
+
*/
141
+
142
+
143
+
144
+
// -- Kriteria 3- Web Server dapat mengubah catatan --
145
+
// perubahan yang dimaksud bisa berupa judul, isi maupun tag catatan
146
+
// ketika client meminta perubahan catatan, ia akan membuat permintaan ke path '/notes/{id}' menggunakan metod 'PUT' serta membawa data JSON pada body request
147
+
// yang merupakan data catatan terbaru
148
+
/**
149
+
* {
150
+
"title":"Judul Catatan Revisi",
151
+
"tags":[
152
+
"Tag 1",
153
+
"Tag 2"
154
+
],
155
+
"body":"Konten catatan"
156
+
}
157
+
*/
158
+
159
+
// jika perubahan data berhasil dilakukan, server harus menanggapi dg status code 200 (OK) dan membawa data JSON objek berikut pada body respons
160
+
/**
161
+
* {
162
+
"status": "success",
163
+
"message": "Catatan berhasil diperbaharui"
164
+
}
165
+
*/
166
+
167
+
// perubahan data catatan harus dismpan ke catatan yang sesuai dg id dan digunakan pada path parameter
168
+
// bila id catatan tidak ditemukan, maka server harus merespons dg status code 404 seperti berikut:
169
+
/**
170
+
* {
171
+
"status": "fail",
172
+
"message": "Gagal memperbarui catatan. Id catatan tidak ditemukan"
173
+
}
174
+
*/
175
+
176
+
177
+
// -- Kriteria 4- Web server dapat menghapus catatan
178
+
// untk menghapus catatan, clien akan membuat permintaan pada path '/notes/{id}' dengan metode 'DELETE'
179
+
// ketika request berhasil maka server mengembalikan status code 200 (OK) serta data jSON sbb:
180
+
/**
181
+
* {
182
+
"status": "success",
183
+
"message": "Catatan berhasil dihapus"
184
+
}
185
+
*/
186
+
187
+
// catatan yg dihapus harus sesuai dg id catatan yang digunakan client pada path parameter.
188
+
// bila id catatan tidak ditemukan, server harus return respon dg status code 404 dan data JSON sbb:
189
+
/**
190
+
* {
191
+
"status": "fail",
192
+
"message": "Catatan gagal dihapus. Id catatan tidak ditemukan"
// pada pengembangan web server kali ini, kita tidak ingin semua kode ditulis dalam 1 berkas saja karna akan semrawut dan sulit utk dimaintenance
3
+
// karena sudah belajar teknik modularisasi pada node.js maka bukan masalah memisahkan kode dalam beberapa berkas
4
+
5
+
// kita akan gunakan single responsibility approach principle
6
+
// artinya 1 berkas JS dengan 1 tujuan saja
7
+
// maka dari itu, setidaknya kita akan membuat 4 berkas JS dg fungsi sbb:
8
+
9
+
// 1. server.js - memuat kode utk membuat, konfigurasi, dan jalankan server HTTP pak pake Hapi
10
+
// 2. routes.js - memuat kode konfigurasi routing server, seperti menentukan path, method dan handler yang digunakan
11
+
// 3. handler.js - memuat seluruh fungsi handler yang digunakan pada berkas routes
12
+
// 4. notes.js - memuat data ntes yang disimpan dlm bentuk Array
13
+
14
+
// semua berkas js itu dibuat dan disimpan dalam folder src. hal ini bertujuan utk memisahkan dari berkas konfig seperti .eslintrc.json, package.json dan nde_modules
15
+
// keseluruhan struktur proyek akan tampak seperti ini:
16
+
/**
17
+
* notes-app-back-end
18
+
* |-- node_modules
19
+
* |-- src
20
+
* | |--handler.js
21
+
* | |--note.js
22
+
* | |--routes.js
23
+
* | |--server.js
24
+
* |--.eslintrc.json
25
+
* |--package.json
26
+
* |--package-lock.json
27
+
* |_package.json
28
+
*/
29
+
30
+
// kita langsung buat saja folder src beserta berkas JS nya.
31
+
// utk server.js, kita ckup memindahkan berkas lama ke folder src ya
32
+
// karena berkas server.js skrg berada di folder src, silahkan ubat alamat berkas tsb pada npm runner script di berkas package.json sbb
0 commit comments