Melanjutkan dari assignment sebelumnya, kali ini kita membuat aplikasi Task Tracker Plus 2 yang dirancang untuk membantu mahasiswa dalam mengatur jadwal studi mereka. Dibangun menggunakan bahasa pemrograman Go (Golang).
Dalam assignment ini, kita akan mengimplementasikan API menggunakan Golang web framework Gin untuk mengelola data task dan category. API harus mengizinkan client untuk:
- users
- Mengirim permintaan POST ke endpoint
/user/register
untuk proses registrasi - Mengirim permintaan POST ke endpoint
/user/login
untuk proses login - Mendapatkan daftar user dengan task dan kategorinya dengan mengirimkan permintaan GET ke endpoint
/user/tasks
.
- Mengirim permintaan POST ke endpoint
- task
- Menambahkan tugas baru dengan mengirimkan permintaan POST ke endpoint
/task/add
. - Mengambil informasi tugas berdasarkan ID dengan mengirimkan permintaan GET ke endpoint
/task/get/:id
. - Memperbarui informasi tugas dengan mengirimkan permintaan PUT ke endpoint
/task/update/:id
. - Menghapus tugas dengan mengirimkan permintaan DELETE ke endpoint
/task/delete/:id
. - Mendapatkan daftar tugas dengan mengirimkan permintaan GET ke endpoint
/task/list
. - Mendapatkan daftar tugas berdasarkan ID kategori dengan mengirimkan permintaan GET ke endpoint
/task/category/:id
. - Menambahkan kategori baru dengan mengirimkan permintaan POST ke endpoint
/category/add
.
- Menambahkan tugas baru dengan mengirimkan permintaan POST ke endpoint
- category
- Mengambil informasi kategori berdasarkan ID dengan mengirimkan permintaan GET ke endpoint
/category/get/:id
. - Memperbarui informasi kategori dengan mengirimkan permintaan PUT ke endpoint
/category/update/:id
. - Menghapus kategori dengan mengirimkan permintaan DELETE ke endpoint
/category/delete/:id
. - Mendapatkan daftar kategori dengan mengirimkan permintaan GET ke endpoint
/category/list
.
- Mengambil informasi kategori berdasarkan ID dengan mengirimkan permintaan GET ke endpoint
Gunakan fungsi pada subpackage di db/filebased
untuk berhubungan dengan database, seluruh fungsinya dapat dipelajari di db/filebased/README.md
dan juga kamu bisa membaca sendiri kode yang ada di dalamnya.
Note: untuk mengakses endpoint
task
dancategory
pengguna harus melakukan login terlebih dahulu.
Pada Assignment ini, kamu harus melengkapi fungsi dari repository user
, task
dan course
ini dengan mengimplementasikan fungsi-fungsi berikut:
π repository
Warning : abaikan code yang tidak berhubungan dengan instruksi di bawah ini pada folder
repository
-
repository/user.go
GetUserByEmail
: Function ini mengambil data pengguna berdasarkan alamat email yang diberikan sebagai argumen. Pertama-tama, function akan mengeksekusi sebuah querySELECT
untuk mencari pengguna dengan email yang cocok di dalam tabelusers
. Query tersebut akan menggunakan klausaWHERE
dengan kondisi email yang diberikan.- Jika pengguna dengan email yang cocok ditemukan, data pengguna akan diassign ke variabel
user
yang merupakan objek dari modelUser
. Function akan mengembalikanuser
dannil
sebagai error. - Namun jika tidak ditemukan pengguna dengan email yang cocok, function akan mengembalikan
user
kosong dannil
sebagai error. - Jika terjadi error lain selama proses tersebut, function akan mengembalikan error yang terjadi.
- Jika pengguna dengan email yang cocok ditemukan, data pengguna akan diassign ke variabel
GetUserTaskCategory
: Fungsi ini digunakan untuk mendapatkan kategori tugas pengguna dari database. Hasil kategori tugas pengguna akan dikembalikan sebagai slice[]model.UserTaskCategory
.- Fungsi ini mengembalikan daftar kategori tugas pengguna yang ditemukan dan
nil
sebagai error. - Jika terjadi error saat menjalankan query, fungsi ini akan mengembalikan error yang terjadi.
- Fungsi ini mengembalikan daftar kategori tugas pengguna yang ditemukan dan
-
repository/task.go
Update
: fungsi akan mengeksekusi sebuah queryUPDATE
untuk memperbarui data tugas tersebut di dalam tabeltasks
. Query tersebut akan menggunakan nilai dari variabelmodel.Task
yang diberikan sebagai argumen.- Jika proses tersebut berhasil, fungsi akan mengembalikan
nil
sebagaierror
. - Namun jika terjadi error pada proses tersebut, fungsi akan mengembalikan
error
yang terjadi.
- Jika proses tersebut berhasil, fungsi akan mengembalikan
Delete
: fungsi untuk menghapus data tugas berdasarkanid
yang diberikan sebagai argumen. Fungsi ini akan mengeksekusi sebuah queryDELETE
untuk menghapus data tugas denganid
tersebut dari tabeltasks
.- Jika proses tersebut berhasil, fungsi akan mengembalikan
nil
sebagaierror
. - Namun jika terjadi error pada proses tersebut, fungsi akan mengembalikan
error
yang terjadi.
- Jika proses tersebut berhasil, fungsi akan mengembalikan
GetList
: fungsi untuk mengambil daftar data tugas dari tabeltasks
. Fungsi akan mengeksekusi sebuah querySELECT
untuk mengambil semua data tugas yang ada dalam tabel.- Jika proses tersebut berhasil, fungsi akan mengembalikan slice
[]*model.Task
yang berisi data tugas yang ditemukan, sertanil
sebagaierror
. - Namun jika terjadi error pada proses tersebut, fungsi akan mengembalikan
nil
sebagai slice[]*model.Task
, sertaerror
yang terjadi.
- Jika proses tersebut berhasil, fungsi akan mengembalikan slice
GetTaskCategory
: fungsi untuk mengambil kategori tugas berdasarkanid
yang diberikan sebagai argumen. Fungsi akan mengeksekusi sebuah querySELECT
dengan menggunakan join tabel antaratasks
dancategories
untuk mengambil informasi kategori tugas yang sesuai denganid
yang diberikan.- Jika proses tersebut berhasil, fungsi akan mengembalikan slice
[]*model.TaskCategory
yang berisi kategori tugas yang ditemukan, sertanil
sebagaierror
. - Namun jika terjadi error pada proses tersebut, fungsi akan mengembalikan
nil
sebagai slice[]*model.TaskCategory
, sertaerror
yang terjadi.
- Jika proses tersebut berhasil, fungsi akan mengembalikan slice
-
repository/category.go
Update
: fungsi untuk memperbarui kategori berdasarkanid
yang diberikan sebagai argumen. Fungsi akan mengeksekusi sebuah queryUPDATE
untuk memperbarui data kategori yang sesuai denganid
yang diberikan dalam tabelcategories
. Query tersebut akan menggunakan nilai dari variabelmodel.Category
yang diberikan sebagai argumen.- Jika proses tersebut berhasil, fungsi akan mengembalikan
nil
sebagaierror
. - Namun jika terjadi error pada proses tersebut, fungsi akan mengembalikan
error
yang terjadi.
- Jika proses tersebut berhasil, fungsi akan mengembalikan
Delete
: fungsi untuk menghapus kategori berdasarkanid
yang diberikan sebagai argumen. Fungsi akan mengeksekusi sebuah queryDELETE
untuk menghapus data kategori denganid
tersebut dari tabelcategories
.- Jika proses tersebut berhasil, fungsi akan mengembalikan
nil
sebagaierror
. - Namun jika terjadi error pada proses tersebut, fungsi akan mengembalikan
error
yang terjadi.
- Jika proses tersebut berhasil, fungsi akan mengembalikan
GetList
: fungsi untuk mengambil daftar kategori dari tabelcategories
. Fungsi akan mengeksekusi sebuah querySELECT
untuk mengambil semua data kategori yang ada dalam tabel.- Jika proses tersebut berhasil, fungsi akan mengembalikan slice
[]*model.Category
yang berisi data kategori yang ditemukan, sertanil
sebagaierror
. - Namun jika terjadi error pada proses tersebut, fungsi akan mengembalikan
nil
sebagai slice[]*model.Category
, sertaerror
yang terjadi.
- Jika proses tersebut berhasil, fungsi akan mengembalikan slice
π service
Layer service digunakan untuk memproses data sesuai dengan aturan bisnis yang telah ditentukan.
-
service/user.go
-
Login
: Fungsi ini digunakan untuk melakukan proses autentikasi pengguna. Fungsi ini menerima argumenuser
yang merupakan data pengguna yang akan login.- Fungsi akan memanggil repository
userRepo
untuk mendapatkan data pengguna berdasarkan alamat email yang diberikan. - Jika pengguna dengan email yang cocok tidak ditemukan, fungsi akan mengembalikan error
user not found
. - Jika email atau kata sandi yang diberikan tidak sesuai dengan data pengguna yang ada, fungsi akan mengembalikan error
wrong email or password
. - Jika autentikasi berhasil, fungsi akan menghasilkan token JWT yang berisi ID pengguna dan waktu kadaluarsa token.
- Fungsi akan mengembalikan token JWT dalam bentuk string dan
nil
sebagai error jika autentikasi berhasil. Jika terjadi error selama proses autentikasi, fungsi akan mengembalikan error yang terjadi.
- Fungsi akan memanggil repository
-
GetUserTaskCategory
: Fungsi ini digunakan untuk mendapatkan kategori tugas pengguna.- Fungsi akan memanggil repository
userRepo
untuk mengambil daftar kategori tugas pengguna dari database. - Jika pengambilan data berhasil, fungsi akan mengembalikan daftar kategori tugas pengguna tersebut.
- Jika terjadi error selama proses pengambilan data, fungsi akan mengembalikan error yang terjadi.
- Fungsi akan memanggil repository
-
-
service/task.go
Update
: fungsi ini menggunakan repositorytaskRepository
untuk memperbarui data tugas.- Jika pembaruan berhasil, fungsi mengembalikan
nil
sebagaierror
- Jika terjadi error, fungsi mengembalikan
error
yang terjadi.
- Jika pembaruan berhasil, fungsi mengembalikan
Delete
: fungsi ini menggunakan repositorytaskRepository
untuk menghapus data tugas berdasarkanid
.- Jika penghapusan berhasil, fungsi mengembalikan
nil
sebagaierror
. - Jika terjadi error, fungsi mengembalikan
error
yang terjadi.
- Jika penghapusan berhasil, fungsi mengembalikan
GetList
: fungsi ini menggunakan repositorytaskRepository
untuk mengambil daftar tugas.- Jika pengambilan daftar tugas berhasil, fungsi mengembalikan daftar tugas (
[]*model.Task
) dannil
sebagaierror
. - Jika terjadi error saat pengambilan daftar tugas, fungsi mengembalikan nil sebagai daftar tugas (
[]*model.Task
) danerror
yang terjadi.
- Jika pengambilan daftar tugas berhasil, fungsi mengembalikan daftar tugas (
GetTaskCategory
: fungsi ini menggunakan repositorytaskRepository
untuk mengambil daftar tugas beserta dengan kategorinya.- Jika pengambilan kategori tugas berhasil, fungsi mengembalikan kategori tugas (
[]*model.TaskCategory
) dannil
sebagaierror
. - Jika terjadi error saat pengambilan kategori tugas, fungsi mengembalikan
nil
sebagai kategori tugas ([]*model.TaskCategory
) danerror
yang terjadi.
- Jika pengambilan kategori tugas berhasil, fungsi mengembalikan kategori tugas (
-
service/category.go
Update
: fungsi ini menggunakan repositorycategoryRepository
untuk memperbarui data kategori.- Jika pembaruan berhasil, fungsi mengembalikan
nil
sebagaierror
- Jika terjadi error, fungsi mengembalikan
error
yang terjadi.
- Jika pembaruan berhasil, fungsi mengembalikan
Delete
: fungsi ini menggunakan repositorycategoryRepository
untuk menghapus data kategori berdasarkanid
.- Jika penghapusan berhasil, fungsi mengembalikan
nil
sebagaierror
. - Jika terjadi error, fungsi mengembalikan
error
yang terjadi.
- Jika penghapusan berhasil, fungsi mengembalikan
GetList
: fungsi ini menggunakan repositorycategoryRepository
untuk mengambil daftar kategori.- Jika pengambilan daftar kategori berhasil, fungsi mengembalikan daftar kategori (
[]*model.Category
) dannil
sebagaierror
. - Jika terjadi error saat pengambilan daftar kategori, fungsi mengembalikan
nil
sebagai daftar kategori ([]*model.Category
) danerror
yang terjadi.
- Jika pengambilan daftar kategori berhasil, fungsi mengembalikan daftar kategori (
π middleware
Di file middleware/auth.go
terdapat fungsi Auth()
yang digunakan untuk melakukan autentikasi pengguna dengan menggunakan JWT (JSON Web Token). Middleware ini berfungsi untuk mengecek apakah user yang mengakses suatu endpoint atau route tertentu sudah terotentikasi atau belum. Fungsi ini terdiri dari beberapa langkah:
-
Mengambil cookie dengan nama session_token dari request dengan key
session_token
. Cookie ini berisi JWT token yang digunakan untuk autentikasi. -
Parsing JWT token pada cookie tersebut untuk mendapatkan claims yang berisi informasi mengenai user ID. JWT token pada cookie tersebut akan di-parse menggunakan JWT library pada Go, yaitu jwt-go. Setelah di-parse, claims pada token tersebut akan dimasukkan ke dalam struct
Claims
.type Claims struct { UserID int `json:"user_id"` jwt.StandardClaims }
Claims pada JWT token ini dapat berisi informasi user yang terotentikasi seperti user ID, username, dan lain-lain. Disini, hanya user ID yang dimasukkan ke dalam context.
-
Menentukan respons HTTP berdasarkan hasil parsing JWT token dan keberadaan cookie.
- Jika parsing token gagal, maka akan mengembalikan respon HTTP dengan status code 401 atau 400 tergantung dari jenis error yang terjadi. Jika token tidak valid, maka akan mengembalikan respon HTTP dengan status code 401.
- Jika cookie session_token tidak ada, maka akan mengembalikan respon HTTP dengan status code 401 jika request memiliki header Content-Type dengan nilai "application/json", atau melakukan redirect ke halaman login jika tidak.
-
Menyimpan nilai UserID dari claims ke dalam context dengan key "id". Nilai UserID ini nantinya akan dapat digunakan di handler atau endpoint selanjutnya.
-
Setelah semua langkah selesai, middleware akan memanggil Next untuk melanjutkan request ke handler atau endpoint selanjutnya.
π api
Warning : abaikan code yang tidak berhubungan dengan instruksi di bawah ini pada folder
api
-
api/user.go
-
method
Login
: adalah sebuah handler yang menerima parameter*gin.Context
. Method ini akan melakukan login user dengan memanggil userService.Login dengan parameter context dan*model.User
yang sudah didapatkan dari body request.-
Method ini wajib mengirim data json dengan contoh format sebagai berikut:
{ "email": <string>, "password": <string> }
-
Jika data
email
ataupassword
kosong maka method ini akan mengembalikan response dengan status code400
dan pesan error sebagai berikut:{ "error": "email or password is empty" }
-
Jika terjadi error saat menggunakan
userService.Login
, maka method ini akan mengembalikan response dengan status code500
dan pesan error sebagai berikut:{ "error": "error internal server" }
-
Jika user berhasil login, maka method ini akan membuat token JWT dengan
UserID
sebagai payload danexpirationTime
sebagai waktu kadaluwarsa. Setelah itu, token JWT akan di-sign dengan menggunakanmodel.JwtKey
.-
Setelah token JWT berhasil di-sign, method akan membuat
cookie
baru dengan namasession_token
dan valuetokenString
yang sudah didapatkan dari JWT sebelumnya. Jika cookie dengan namasession_token
sudah ada, maka value cookie tersebut akan diganti dengantokenString
yang baru. -
Method akan mengembalikan response dengan status code
200
dan data user yang sudah login. Jika sukses, maka response akan berisi status200
dan data JSON berikut:{ "user_id": <int>, "message": "login success" }
-
-
-
Method
GetUserTaskCategory
: Ini adalah handler yang menerima parameter*gin.Context
. Method ini digunakan untuk mendapatkan daftar tugas pengguna dengan kategori yang terkait. Method ini akan memanggil fungsiuserService.GetUserTaskCategory
untuk mengambil data tugas pengguna.-
Method ini tidak memerlukan input dari permintaan. Permintaan dapat dikirim tanpa body atau dengan body kosong.
-
Jika terjadi error saat menggunakan
userService.GetUserTaskCategory
, method ini akan mengembalikan respons dengan kode status500
dan pesan error sebagai berikut:{ "error": "error internal server" }
-
Jika data tugas pengguna berhasil diambil, method ini akan mengembalikan respons dengan kode status
200
dan data JSON yang berisi daftar tugas pengguna dengan kategori terkait. -
Contoh respons dengan kode status
200
:[ { "ID": 1, "Fullname": "test", "Email": "test@mail.com", "Task": "Task 2", "Deadline": "2023-06-01", "Priority": 1, "Status": "Completed", "Category": "Category 2" }, { "ID": 1, "Fullname": "test", "Email": "test@mail.com", "Task": "Task 5", "Deadline": "2023-06-07", "Priority": 5, "Status": "In Progress", "Category": "Category 3" } ]
-
-
-
api/task.go
-
UpdateTask
: fungsi ini digunakan untuk mengupdate data mahasiswa denganid
yang sesuai dengan nilai yang diberikan sebagai argumen.- Jika nilai
id
tidak valid, fungsi akan mengirimkan respons dengan kode status400
dan pesan error dalam format JSON{"error": "invalid task ID"}
. - Jika data yang diberikan tidak valid, fungsi akan mengirimkan respons dengan kode status
400
dan pesan error dalam format JSON. - Selanjutnya, fungsi memanggil
Update
daritaskService
untuk memperbarui tugas dengantaskID
yang diberikan sebagai argumen. AssigntaskID
ke structmodel.Task.ID
yang akan dikirim ke fungsi tersebut.- Jika proses berhasil, fungsi akan mengirimkan respons dengan kode status
200
dan pesan sukses dalam format JSON{"message": "update task success"}
. - Jika terjadi error pada proses tersebut, fungsi akan mengirimkan respons dengan kode status
500
dan pesan error dalam format JSON.
- Jika proses berhasil, fungsi akan mengirimkan respons dengan kode status
- Jika nilai
-
DeleteTask
: fungsi ini digunakan untuk menghapus tugas denganid
yang sesuai dengan nilai yang diberikan sebagai argumen.- Jika nilai
id
tidak valid, fungsi akan mengirimkan respons dengan kode status400
dan pesan error dalam format JSON{"error": "invalid task ID"}
. - Selanjutnya, fungsi memanggil
Delete
daritaskService
untuk menghapus tugas dengantaskID
yang diberikan sebagai argumen.- Jika terjadi error saat proses penghapusan, fungsi akan mengirimkan tanggapan JSON dengan kode status HTTP
500
Internal Server Error dan pesan error. - Jika tidak terjadi error dalam proses penghapusan, fungsi akan mengirimkan tanggapan JSON dengan kode status HTTP
200
OK dan pesan sukses{"message": "delete Task success"}
.
- Jika terjadi error saat proses penghapusan, fungsi akan mengirimkan tanggapan JSON dengan kode status HTTP
- Jika nilai
-
GetTaskList
: fungsi ini digunakan untuk mendapatkan daftar tugas.-
Pertama, fungsi memanggil
GetList
daritaskService
untuk mendapatkan daftar tugas.-
Jika terjadi error saat mengambil daftar tugas, fungsi akan mengirimkan tanggapan JSON dengan kode status HTTP
500
Internal Server Error dan pesan error yang sesuai ke client. -
Jika tidak terjadi error, fungsi akan mengirimkan tanggapan JSON dengan kode status HTTP
200
OK dan daftar tugas ke client. Contoh:[ { "id": 1, "title": "Task 1", "deadline": "2023-05-30", "priority": 2, "category_id": "1", "status": "In Progress" }, { "id": 2, "title": "Task 2", "deadline": "2023-06-10", "priority": 1, "category_id": "2", "status": "Completed" }, ... ]
-
-
-
GetTaskCategory
: fungsi ini digunakan untuk mendapatkan daftar tugas dengan nama kategorinya.-
Pertama, fungsi memanggil
GetTaskCategory
daritaskService
untuk mendapatkan daftar tugas.-
Jika terjadi error saat mengambil daftar tugas, fungsi akan mengirimkan tanggapan JSON dengan kode status HTTP
500
Internal Server Error dan pesan error yang sesuai ke client. -
Jika tidak terjadi error, fungsi akan mengirimkan tanggapan JSON dengan kode status HTTP
200
OK dan daftar tugas beserta nama kategorinya ke client. Contoh:[ { "id": 1, "title": "Task 1", "category": "Category 1" }, { "id": 2, "title": "Task 2", "category": "Category 2" }, ... ]
-
-
-
-
api/category.go
-
UpdateCategory
: fungsi ini digunakan untuk mengupdate kategori denganid
yang sesuai dengan nilai yang diberikan sebagai argumen.- Jika nilai
id
tidak valid (gagal dikonversi menjadi tipe data int), fungsi akan mengirimkan respons JSON dengan kode status HTTP400
Bad Request dan pesan error dalam format JSON{"error": "invalid Category ID"}
. - Jika data yang diberikan tidak valid, fungsi akan mengirimkan respons JSON dengan kode status HTTP
400
Bad Request dan pesan error dalam format JSON. - Jika data yang diberikan valid, fungsi akan memanggil fungsi
Update
padacategoryService
untuk mengupdate kategori dengan ID yang sesuai dengan nilai yang diberikan.- Jika proses update berhasil, fungsi akan mengirimkan respons JSON dengan kode status HTTP
200
OK dan pesan sukses dalam format JSON{"message": "category update success"}
. - Namun jika terjadi error pada proses update, fungsi akan mengirimkan respons JSON dengan kode status HTTP
500
Internal Server Error dan pesan error dalam format JSON.
- Jika proses update berhasil, fungsi akan mengirimkan respons JSON dengan kode status HTTP
- Jika nilai
-
DeleteCategory
: fungsi ini digunakan untuk menghapus kategori denganid
yang sesuai dengan nilai yang diberikan sebagai argumen.- Jika nilai
id
tidak valid (gagal dikonversi menjadi tipe data int), fungsi akan mengirimkan respons JSON dengan kode status HTTP400
Bad Request dan pesan error dalam format JSON{"error": "Invalid category ID"}
. - Jika nilai
id
valid, fungsi akan memanggil fungsiDelete
padacategoryService
untuk menghapus kategori denganID
yang sesuai dengan nilai yang diberikan.- Jika proses penghapusan berhasil, fungsi akan mengirimkan respons JSON dengan kode status HTTP
200
OK dan pesan sukses dalam format JSON{"message": "category delete success"}
. - Namun jika terjadi error pada proses penghapusan, fungsi akan mengirimkan respons JSON dengan kode status HTTP
500
Internal Server Error dan pesan error dalam format JSON.
- Jika proses penghapusan berhasil, fungsi akan mengirimkan respons JSON dengan kode status HTTP
- Jika nilai
-
GetCategoryList
: fungsi ini digunakan untuk mendapatkan daftar kategori.-
Fungsi memanggil
GetList
daricategoryService
untuk mendapatkan daftar kategori.-
Jika terjadi error saat mengambil daftar kategori, fungsi akan mengirimkan respons JSON dengan kode status HTTP
500
Internal Server Error dan pesan error yang sesuai ke client. -
Jika tidak terjadi error, fungsi akan mengirimkan respons JSON dengan kode status HTTP
200
OK dan daftar kategori ke client. Contoh:[ { "id": 1, "name": "Category 1" }, { "id": 2, "name": "Category 2" }, ... ]
-
-
-
Input:
PUT /task/update/{id} HTTP/1.1
Host: localhost:8080
Content-Type: application/json
{
"title": "Task 1",
"deadline": "2023-06-30",
"priority": 2,
"category_id": "1",
"status": "In Progress"
}
Expected Output / Behavior:
-
Jika permintaan berhasil dan ID tugas valid, server harus mengembalikan kode status HTTP
200
OK dan respons JSON dengan pesan sukses.{ "message": "update Task success" }
-
Jika permintaan gagal karena ID tugas tidak valid, server harus mengembalikan kode status HTTP
400
Bad Request dan respons JSON dengan pesan kesalahan.{ "error": "Invalid task ID" }
-
Jika permintaan gagal karena format data tugas tidak sesuai yang diharapkan, server harus mengembalikan kode status HTTP
400
Bad Request dan respons JSON dengan pesan kesalahan.{ "error": "[error messages]" }
-
Jika terjadi kesalahan saat memperbarui data tugas, server harus mengembalikan kode status HTTP
500
Internal Server Error dan respons JSON dengan pesan kesalahan.{ "error": "[error messages]" }
Input:
DELETE /task/delete/{id} HTTP/1.1
Host: localhost:8080
Expected Output / Behavior:
-
Jika permintaan berhasil dan ID tugas valid, server harus mengembalikan kode status HTTP
200
OK dan respons JSON dengan pesan sukses.{ "message": "delete Task success" }
-
Jika permintaan gagal karena ID tugas tidak valid, server harus mengembalikan kode status HTTP
400
Bad Request dan respons JSON dengan pesan kesalahan.{ "error": "Invalid task ID" }
-
Jika terjadi kesalahan saat menghapus tugas, server harus mengembalikan kode status HTTP
500
Internal Server Error dan respons JSON dengan pesan kesalahan.{ "error": "[error messages]" }
Input:
GET /task/list HTTP/1.1
Host: localhost:8080
Expected Output / Behavior:
-
Jika permintaan berhasil, server harus mengembalikan kode status HTTP
200
OK dan respons JSON dengan daftar tugas.[ { "id": 1, "title": "Task 1", "deadline": "2023-05-30", "priority": 2, "category_id": "1", "status": "In Progress" }, { "id": 2, "title": "Task 2", "deadline": "2023-06-10", "priority": 1, "category_id": "2", "status": "Completed" }, ... ]
-
Jika terjadi kesalahan saat mendapatkan daftar tugas, server harus mengembalikan kode status HTTP
500
Internal Server Error dan respons JSON dengan pesan kesalahan.{ "error": "[error messages]" }