大家好! ?
上次,我進行了一次尋找最佳 API 的小冒險,在測試了幾個選項後,我選擇了 Wordnik。它有一個龐大的單字資料庫,雖然花了一周的時間才拿到 API 金鑰,但我終於拿到了。現在是時候整合它並檢查從我們的排列生成的單字是否實際上有效。
我意識到的一件事是,大多數字典 API(包括 Wordnik)沒有直接的方法來檢查單字是否存在。它們提供了定義和範例,但沒有直接驗證。
為了解決這個問題,我使用了 Wordnik 的 Scrabble 分數。邏輯很簡單:如果一個單字有拼字遊戲分數,它就被認為是有效的。
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); }
此函數負責透過查詢其 Scrabble 分數端點來檢查 Wordnik API 中是否存在給定單字。
網址設定:
API 請求:
這是解讀輸入單字並驗證每個排列的主要函數。
取得輸入:
生成排列:
驗證每個單字:
一旦找到一種方法來保護我的 API 金鑰,然後再推送到 GitHub,我將立即分享即時連結。
另一個障礙是 Wordnik 的 API 所施加的速率限制。當我超出限制時,驗證過程會遇到 429(請求過多)錯誤,一切都會停止。我正在考慮的潛在解決方案是在達到限制時添加延遲,以避免 API 過載。
如果您有任何更好的想法或建議,請隨時在評論中分享或在 Twitter 上聯繫我。
下一步:我將致力於優化效能,找到速率限制的解決方案,並確保輸入僅接受字串,不接受數字。
請繼續關注更多更新!
以上是使用 JavaScript 建立 Word Unscrambler(第 4 部分)的詳細內容。更多資訊請關注PHP中文網其他相關文章!