Hei semua! ?
Kali terakhir, saya melakukan pengembaraan mini mencari API terbaik, dan selepas menguji beberapa pilihan, saya memilih Wordnik. Ia mempunyai pangkalan data perkataan yang besar, dan walaupun mengambil masa seminggu untuk mendapatkan kunci API, saya akhirnya mendapatnya. Kini tiba masanya untuk menyepadukannya dan menyemak sama ada perkataan yang dijana daripada pilih atur kami sebenarnya sah.
Satu perkara yang saya sedar ialah kebanyakan API kamus, termasuk Wordnik, tidak mempunyai cara langsung untuk menyemak sama ada perkataan wujud. Mereka memberikan takrifan dan contoh tetapi bukan pengesahan terus.
Untuk mengatasi masalah ini, saya menggunakan titik akhir skor Scrabble Wordnik. Logiknya mudah: jika perkataan mempunyai skor Scrabble, ia dianggap sah.
async function isValidWord(word) { const apiKey = 'API_KEY'; // use your own API keys const url = `https://api.wordnik.com/v4/word.json/${word}/scrabbleScore?api_key=${apiKey}`; try { const response = await fetch(url); if (response.status === 200) { return true; // Word is valid } else if (response.status === 404) { return false; // Word not found in dictionary } else { console.error(`Error: Received status ${response.status} for word "${word}"`); return false; } } catch (error) { console.error('Error checking word validity:', error); return false; } } async function descrambleWords() { const input = document.getElementById('scrambledInput').value; const combinations = generatePermutations(input); const validWords = []; // Check each word one by one for validity for (const word of combinations) { const isValid = await isValidWord(word); if (isValid) { validWords.push(word); // Only push valid words } } const categorizedWords = categorizeByLength(validWords); displayResults(categorizedWords); }
Fungsi ini bertanggungjawab untuk menyemak sama ada perkataan tertentu wujud dalam Wordnik API dengan menanyakan titik akhir skor Scrabblenya.
Persediaan URL:
Permintaan API:
Ini ialah fungsi utama yang menguraikan perkataan input dan mengesahkan setiap pilih atur.
Dapatkan input:
Jana pilih atur:
Sahkan setiap perkataan:
Saya akan berkongsi pautan langsung sebaik sahaja saya mencari cara untuk melindungi kunci API saya sebelum menolak ke GitHub.
Satu lagi halangan ialah had kadar yang dikenakan oleh API Wordnik. Apabila saya melebihi had, proses pengesahan mencecah ralat 429 (Terlalu Banyak Permintaan), menghentikan segala-galanya. Penyelesaian yang berpotensi yang saya sedang pertimbangkan ialah menambahkan kelewatan apabila had dicapai untuk mengelak daripada membebankan API.
Jika anda mempunyai sebarang idea atau cadangan yang lebih baik, sila kongsi dalam ulasan atau hubungi saya di Twitter.
Seterusnya: Saya akan berusaha untuk mengoptimumkan prestasi, mencari penyelesaian kepada had kadar dan memastikan input hanya menerima rentetan, tiada nombor.
Nantikan lebih banyak kemas kini!
Atas ialah kandungan terperinci Membina Word Unscrambler dengan JavaScript (bahagian 4). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!