Skip to content

Commit 106f22b

Browse files
committed
perbarui kriteria proyek dan tambah artikel struktur proyek
1 parent 76133fa commit 106f22b

File tree

7 files changed

+177
-4
lines changed

7 files changed

+177
-4
lines changed

18-kriteria-proyek.js

+134-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// http://notesapp-v1.dicodingacademy.com/
66
// namun aplikasi tsb tidak bs digunakan, karna blm terhubung dg RESTful API
77

8-
// kriteria 1- web server dapat menyimpan catatan
8+
// -- kriteria 1- web server dapat menyimpan catatan --
99
// menyimpan tanpa perlu ke server, ckup ke memory server dalam bentuk array
1010
// berikut struktur objek catatannya :
1111
/**
@@ -59,4 +59,136 @@
5959
"status": "error",
6060
"message": "Catatan gagal untuk ditambahkan"
6161
}
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"
193+
}
194+
*/

18a-struktur-proyek.js

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// --- STRUKTUR PROYEK ---
2+
// 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
33+
/**
34+
* "scripts": {
35+
"start": "nodemon ./src/server.js",
36+
"lint": "eslint ./src"
37+
},
38+
*/

notes-app-back-end/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"description": "backend dari aplikasi notes",
55
"main": "index.js",
66
"scripts": {
7-
"start": "nodemon server.js",
8-
"lint" : "eslint ./"
7+
"start": "nodemon ./src/server.js",
8+
"lint" : "eslint ./src"
99
},
1010
"author": "haris n",
1111
"license": "ISC",

notes-app-back-end/src/handler.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
File renamed without changes.

notes-app-back-end/src/routes.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log( ' halo kita akan membuat RESTful API !');

notes-app-back-end/src/server.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log( ' halo kita akan membuat RESTful API !');

0 commit comments

Comments
 (0)