Latihan 1 dari materi Microservices Architecture di DevOps — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi function routeRequest(gateway, path): cara API gateway memilih service untuk sebuah request.
gateway adalah object dengan key = prefix path dan value = alamat service, misalnya { "/auth": "http://auth:3001", "/api/orders": "http://orders:3002" }. path adalah path request.
Cari semua key yang cocok dengan path per segmen: path === prefix atau path.startsWith(prefix + "/"). Jadi /auth cocok untuk /auth/login, tapi bukan untuk /authors.
Dari yang cocok, pilih yang terpanjang.
Kembalikan object dengan key service lalu path: service adalah alamat milik prefix itu, path adalah sisa path setelah prefix dibuang. Kalau sisanya kosong, kembalikan "/" (gak dicek, tapi rapi).
Kalau gak ada prefix yang cocok, kembalikan { error: "no route" }.
Baris console.log(...) di kode awal sudah ada, biarkan saja.
Hint
Gateway mencocokkan awal path dengan tiap prefix di tabelnya. Kalau beberapa cocok, yang paling panjang yang paling spesifik, jadi dia yang menang.
Loop Object.keys(gateway). Sebuah prefix cocok kalau path === prefix atau path.startsWith(prefix + "/"). Simpan yang cocok dan paling panjang. Setelah loop, kalau gak ada yang cocok, kembalikan { error: "no route" }.
let best = null; for (const prefix of Object.keys(gateway)) { const cocok = path === prefix || path.startsWith(prefix + "/"); if (cocok && (!best || prefix.length > best.length)) best = prefix; } if (!best) return { error: "no route" }; return { service: gateway[best], path: path.slice(best.length) || "/" };
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...