我正在尝试创建一个翻译页面,在那里您键入单词,它应该翻译为您在下拉列表中选择的语言。使用React和axios以及来自Rapid API的API。
我一直收到像401,429这样的错误,我知道错误是什么,但不知道如何修复它。会不会是网站的Rapid API给了我一个糟糕的API?
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发布于 2021-01-08 01:03:03
我想这里有两个不同的API...您正在谈论的是RapidAPI应用程序接口,但在代码中您使用的是MyMemory应用编程接口。
因此,关于您的代码和MyMemory API specification,我在您的代码中发现了几个错误:
axios.post替换为axios.get).有了这些更改,代码应该运行得很好。我试过了,它起作用了。
发布于 2021-01-08 04:28:31
尝试下一段代码:
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并单击“订阅测试”按钮。然后选择免费套餐,你就可以开始了。
发布于 2021-08-31 10:05:19
这里有一些绝对可以解决这个问题的要点。
x-rapidapi-key就是你的API key。因此,您可以在头文件中传递x-rapidapi-key,而不是在参数中提及key。https://stackoverflow.com/questions/65616370
复制相似问题