Terdapat beberapa kriteria utama yang harus Anda penuhi dalam membuat proyek Music API.
.env.php artisan make:migration <nama_migration> untuk membuat migration.routes/api.php).routes/api.php, maka otomatis route akan
diberi prefix /api.php artisan route:list.php artisan install:api sebelum mendefinisikan routes. Baca lebih lengkap
disini. API yang anda buat harus dapat menyimpan musik melalui route:
{
"title": string,
"year": number,
"artist": string,
"genre": string,
"duration": number
}Objek musik yang disimpan pada server harus memiliki struktur seperti contoh di bawah ini:
{
"id": 1,
"title": "Hey Jude",
"year": 1968,
"artist": "The Beatles",
"genre": "Pop rock",
"duration": 430,
"created_at": 2024-03-31T03:20:51Z,
"updated_at": 2024-03-31T04:02:55Z
} id: nilai id haruslah unik. Untuk membuat nilai unik, Anda bisa
memanfaatkan fitur
increments()
pada file migration, atau bisa menggunakan
UUID. Anda bisa
pelajari tentang primary key pada Laravel
disini.created_at: merupakan properti yang menampung tanggal dimasukkannya musik. Anda
bisa menggunakan
timestamps() pada file migration Anda. Pada Laravel, properti ini otomatis terisi, jadi tidak perlu mengisi
manual.updated_at: merupakan properti yang menampung tanggal kapan data musik diubah.
Jika menggunakan timestamp() pada migration, maka otomatis properti ini akan dibuat.
Nilai properti ini akan diubah otomatis oleh Laravel, ketika data diperbarui.Bila musik berhasil dimasukkan, server harus mengembalikan respons data musik yang baru ditambahkan:
{
"id": 2,
"title": "Arkadia",
"year": 2019,
"artist": "Babymetal",
"genre": "Metal",
"duration": 319,
"created_at": 2024-03-31T03:20:51Z,
"updated_at": 2024-03-31T04:02:55Z
}API yang Anda buat harus dapat menampilkan seluruh musik yang disimpan melalui route:
Server harus mengembalikan response dengan:
[
{
"id": 1,
"title": "Hey Jude",
"artist": "The Beatles",
},
{
"id": 2,
"title": "Arkadia",
"artist": "Babymetal",
}
]Jika belum terdapat musik yang dimasukkan, server bisa merespons dengan array kosong.
[] API yang Anda buat harus dapat menampilkan detail musik yang disimpan melalui route:
Bila musik dengan id yang dilampirkan ditemukan, maka server harus
mengembalikan respons dengan:
{
"id": 2,
"title": "Arkadia",
"year": 2019,
"artist": "Babymetal",
"genre": "Metal",
"duration": 319,
"created_at": 2024-03-31T03:20:51Z,
"updated_at": 2024-03-31T04:02:55Z
}Bila musik dengan id yang dilampirkan oleh client tidak ditemukan,
maka server harus mengembalikan respons dengan:
{
"status": "failed",
"message": "musik tidak ditemukan"
}API yang Anda buat harus dapat menampilkan detail musik yang disimpan melalui route:
{
"title": ?string,
"year": ?number,
"artist": ?string,
"genre": ?string,
"duration": ?number
} *Semua field pada request body opsional.Bila musik berhasil diperbarui, server harus mengembalikan respons dengan data musik terbaru:
{
"id": 2,
"title": "Arkadia",
"year": 2019,
"artist": "Babymetal",
"genre": "J-Pop",
"duration": 319,
"created_at": 2024-03-31T03:20:51Z,
"updated_at": 2024-04-31T11:13:29Z
}Bila musik dengan id yang dilampirkan oleh client tidak ditemukan,
maka server harus mengembalikan respons dengan:
{
"status": "failed",
"message": "musik tidak ditemukan"
}API yang Anda buat harus dapat menghapus detail musik yang disimpan melalui route:
Bila musik berhasil dihapus, server harus mengembalikan respons berikut:
Bila musik dengan id yang dilampirkan oleh client tidak ditemukan,
maka server harus mengembalikan respons dengan:
{
"status": "failed",
"message": "musik tidak ditemukan"
}Selain kriteria utama, terdapat kriteria opsional yang yang dapat Anda penuhi agar mendapat nilai yang baik.
Menerapkan proses Data Validation pada Request Payload sesuai spesifikasi berikut:
Jika terdapat request body yang tidak valid, maka server harus mengembalikan response sebagai berikut:
{
"message": "The title field is required. (and 1 more error)",
"errors": {
"title": [
"The title field is required."
],
"duration": [
"The duration field is required."
]
}
} Jika menggunakan fitur Validation bawaan pada Laravel, maka server otomatis merespons seperti di atas jika terdapat input yang tidak valid. Untuk informasi lebih lanjut mengenai Validation pada Laravel bisa membuka link berikut.
Menerapkan query parameter pada endpoint GET /api/musics untuk fitur pencarian musik. Berikut ketentuan parameternya: