首页 >web前端 >js教程 >使用 JavaScript 构建 Word Unscrambler(第 4 部分)

使用 JavaScript 构建 Word Unscrambler(第 4 部分)

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-16 18:26:02911浏览

大家好! ?

上次,我进行了一次寻找最佳 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); 
}

分解它

异步函数 isValidWord(word)

此函数负责通过查询其 Scrabble 分数端点来检查 Wordnik API 中是否存在给定单词。

  1. 网址设置

    • 该函数使用我们要检查的单词构建 API 请求,并将其附加到 Scrabble 分数端点的基本 URL。
    • 示例:对于单词“apple”,URL 为: https://api.wordnik.com/v4/word.json/apple/scrabbleScore?api_key=YOUR_API_KEY。
  2. API 请求:

    • wait fetch(url) 向 Wordnik API 发送 HTTP 请求。
    • 响应处理
      • 200(OK):如果 API 返回 200 状态,则表示该单词存在并且具有 Scrabble 分数。我们将其视为有效单词并返回 true。
      • 404(未找到):如果 API 返回 404,则表示在字典中未找到该单词,我们返回 false。
      • 任何其他状态代码都会被记录为错误,我们返回 false 来指示该单词无效或存在问题。

异步函数 descrambleWords()

这是解读输入单词并验证每个排列的主要函数。

  1. 获取输入

    • 它首先使用 document.getElementById('scrambledInput').value 从输入字段中获取乱序单词。
  2. 生成排列:

    • 函数调用generatePermutations(input)来生成乱序单词的所有可能组合。
  3. 验证每个单词:

    • 然后循环遍历每个排列并调用 isValidWord(word) 来检查它是否有效。
    • 如果单词有效(即它存在于 Wordnik API 中),则会将其添加到 validWords 数组中。

Building a Word Unscrambler with JavaScript (part 4)
一旦找到一种方法来保护我的 API 密钥,然后再推送到 GitHub,我将立即分享实时链接。

另一个障碍是 Wordnik 的 API 施加的速率限制。当我超出限制时,验证过程会遇到 429(请求过多)错误,一切都会停止。我正在考虑的一个潜在解决方案是在达到限制时添加延迟,以避免 API 过载。

如果您有任何更好的想法或建议,请随时在评论中分享或在 Twitter 上联系我。

下一步:我将致力于优化性能,找到速率限制的解决方案,并确保输入仅接受字符串,不接受数字。
请继续关注更多更新!

以上是使用 JavaScript 构建 Word Unscrambler(第 4 部分)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn