Rest API

Rest API

Method

Status Code

Clean Arsitektur

Routing

Service

Model

Repositories

Dependency Injection

Mysql Connection

Buat file helper.config.js

Buat file helper/mysql.js

CRUD

Untuk Rest API, kita akan menyediakan 5 endpoint meliputi Create, Read, Update dan Delete (CRUD). Penamaaan dan method endpoint mengikuti konsep best practice Rest API, yaitu : - GET /users --> untuk mendapatkan list seluruh users - POST /users --> untuk membuat user baru - GET /users/:id --> untuk mendapatkan satu user berdasarkan id - PUT /users/:id --> untuk mengubah data user berdasarkan id - DELETE /users/:id --> untuk menghapus user berdasarkan id - POST /login --> untuk login user

Karena menggunakan desain Clean Arsiteksur, maka struktur folder project kita meliputi:

[domain] ---- [users] ---- [repositories] ---- file-repository.js ---- [services] ---- file-service.js ---- model.js ---- route.js ---- service.js [helper] ---- file-helper.js index.js file index.js berisi :

file index.js ini simple dan hanya bertugas untuk melakukan pekerjaan middleware berupa : - handling cors melalui middleware cors() - handling json body parser melalui middleware express.json() Untuk installasi cors jalankan npm install cors

Selain itu, konkesi database juga dicreate di file index,js yang nantinya akan diteruskan (diinjeksi) ke seluruh service yang membutuhkan mengikuti konsep dependency injection.

Routing dilakukan dengan memanggil routing yang ada di setiap domain.

GET /users

Buat file domain/users/route.js untuk membuat routing GET /users

Buat file domain/users/service.js

Buat file domain/users/services/list_user.js

Buat file domain/users/model.js

model merupakan entity dari User yang berisi seluruh atribut (field) dan method dari User. Dalam hal ini, user mempunyai atribut email, name, password dan age. Sementara method yang disediakan untuk endpoint ini adalah User.List.

Buat file domain/users/repositories/list_user.js

endpoint GET /users sudah bisa dicoba melalui postman

POST /users

Update file domain/users/route.js untuk menambahkan routing POST /users

Update file domain/users/service.js untuk menambahkan handling service POST /users

Update file domain/users/model.js untuk menambahkan method User.Create

Buat file domain/users/services/create_user.js

Kode di atas membutuhkan bscrypt untuk hasih password. Jangan lupa install bcrypt melalui perintah npm install bcrypt.

Buat file domain/users/repositories/create_user.js

Endpoint POST /users sudah bisa dicoba melalui postman

GET /users/:id

Update file domain/users/route.js untuk menambahkan routing GET /users/:id

Update file domain/users/service.js untuk menambahkan handling service GET /users/:id

Update file domain/users/model.js untuk menambahkan method User.View

Buat file domain/users/services/view_user.js

Buat file domain/users/repositories/view_user.js

Endpoint GET /users/:id sidah bisa dites.

PUT /users:/id

Update file domain/users/route.js untuk menambahkan routing PUT /users/:id

Update file domain/users/service.js untuk menambahkan handling service PUT /users/:id

Update file domain/users/model.js untuk menambahkan method User.Update

Buat file domain/users/services/update_user.js

Buat file domain/users/repositories/update_user.js

Endpoint PUT /users/:id sidah bisa dites.

DELETE /users/:id

Update file domain/users/route.js untuk menambahkan routing DELETE /users/:id

Update file domain/users/service.js untuk menambahkan handling service DELETE /users/:id

Update file domain/users/model.js untuk menambahkan method User.Delete

Buat file domain/users/services/delete_user.js

Buat file domain/users/repositories/delete_user.js

Endpoint DELETE /users/:id sidah bisa dites.

Login

Update file domain/users/route.js untuk menambahkan routing POST /login

Update file domain/users/service.js untuk menambahkan handling service login

Update file domain/users/model.js untuk menambahkan method User.Login

Buat file domain/users/services/login.js

Buat file domain/users/repositories/login.js

Endpoint POST /login sudah bisa dites.

Last updated

Was this helpful?