大家好! ?
上次,我进行了一次寻找最佳 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中文网其他相关文章!