首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用google translate api翻译单词的react出现问题

使用google translate api翻译单词的react出现问题
EN

Stack Overflow用户
提问于 2021-01-08 00:35:58
回答 3查看 335关注 0票数 0

我正在尝试创建一个翻译页面,在那里您键入单词,它应该翻译为您在下拉列表中选择的语言。使用React和axios以及来自Rapid API的API。

我一直收到像401,429这样的错误,我知道错误是什么,但不知道如何修复它。会不会是网站的Rapid API给了我一个糟糕的API?

代码语言:javascript
复制
import axios from "axios"

// de-structure language and text props
const Convert = ({ language, text }) => {
  const [results, setResults] = useState("")

  useEffect(() => {
    const translate = async () => {
      const translation = await axios.post(
        "https://google-translate1.p.rapidapi.com/language/translate/v2",
        {},
        {
          params: {
            q: text,
            target: language.value,
            key: "cd4662825bmshfb23e36cc668d7fp111f42jsn736f6cc3a9aa",
          },
        }
      )

      setResults(translation.data.data.translations[0].translatedText)
    }

    translate()
  }, [language, text])
console.log(results);
  return (
    <div>
      <p>{results}</p>
    </div>
  )
}

export default Convert ```


  [1]: https://rapidapi.com/googlecloud/api/google-translate1?endpoint=apiendpoint_a5764907-04b6-4d61-869b-79dc5325c739
EN

回答 3

Stack Overflow用户

发布于 2021-01-08 01:03:03

我想这里有两个不同的API...您正在谈论的是RapidAPI应用程序接口,但在代码中您使用的是MyMemory应用编程接口。

因此,关于您的代码和MyMemory API specification,我在您的代码中发现了几个错误:

  1. 您正在调用/status端点,它会检查TM导入的状态。我认为这不是您要呼叫的端点。相反,您必须向/get端点发出请求:https://api.mymemory.translated.net/get.
  2. Also请求应该是get,而不是post (只需将axios.post替换为axios.get).
  3. The "q“和”/get“参数是正确的,但在文档中它说您必须发送一个”“参数,而不是”“。

有了这些更改,代码应该运行得很好。我试过了,它起作用了。

票数 0
EN

Stack Overflow用户

发布于 2021-01-08 04:28:31

尝试下一段代码:

代码语言:javascript
复制
import React, { useState, useEffect } from "react"
import axios from "axios"
import qs from "qs"

// de-structure language and text props
const Convert = ({ language, text }) => {
  const [results, setResults] = useState("")

  useEffect(() => {
    const translate = async () => {
      const translation = await axios.post(
        "https://google-translate1.p.rapidapi.com/language/translate/v2",
        qs.stringify({
          q: text,
          target: language.value
        }),
        {
          headers: {
            'x-rapidapi-key': 'cd4662825bmshfb23e36cc668d7fp111f42jsn736f6cc3a9aa',
            'x-rapidapi-host': 'google-translate1.p.rapidapi.com'
          }
        }
      )

      setResults(translation.data.data.translations[0].translatedText)
    }

    translate()
  }, [])
  console.log(results);
  return (
    <div>
      <p>{results}</p>
    </div>
  )
}

export default Convert

如果你得到一个API403禁止的错误,那么这可能是因为你没有订阅这个。要解决这个问题,只需转到https://rapidapi.com/googlecloud/api/google-translate1并单击“订阅测试”按钮。然后选择免费套餐,你就可以开始了。

票数 0
EN

Stack Overflow用户

发布于 2021-08-31 10:05:19

这里有一些绝对可以解决这个问题的要点。

  • 如果你使用的是RapidAPI,那么x-rapidapi-key就是你的API key。因此,您可以在头文件中传递x-rapidapi-key,而不是在参数中提及key
  • 产生403代码的可能原因是您没有订阅该特定的接口。请务必仔细检查。
  • 429状态码指示在给定的时间内有如此多的请求。我已经检查过了,速率限制是每秒5个请求,因为Google Translate API.
  • You可以使用RapidAPI提供的代码片段,以避免任何不必要的错误。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65616370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档