我正在为学习目的开发一个本机项目。我同样使用RapidAPI(https://rapidapi.com/divad12/api/numbers-1/endpoints)。
当我点击API时,状态为200OK,但是我无法从API读取JSON格式的响应数据。
代码:
fetchCurrencyData = () => {
fetch("https://numbersapi.p.rapidapi.com/7/21/date?fragment=true&json=true", {
"method": "GET",
"headers": {
"x-rapidapi-host": "numbersapi.p.rapidapi.com",
"x-rapidapi-key": "<Valid API Key, generated in code snippet>"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.log(err);
});
}
componentDidMount(){
this.fetchCurrencyData();
}
在console.log(响应)中;我得到:
我在RapidAPI-> MyApps部分中检查了响应:
如何读取JSON格式的响应正文?
答案 0 :(得分:1)
当前,您正在打印响应对象,其中包含原始响应,包括标题等。 您可以执行以下操作:
fetchCurrencyData = () => {
fetch("https://numbersapi.p.rapidapi.com/7/21/date?fragment=true&json=true", {
"method": "GET",
"headers": {
"x-rapidapi-host": "numbersapi.p.rapidapi.com",
"x-rapidapi-key": "<Valid API Key, generated in code snippet>"
}
})
.then(response => response.json()) // Getting the actual response data
.then(data => {
console.log(data);
})
.catch(err => {
console.log(err);
});
}
componentDidMount(){
this.fetchCurrencyData();
}
答案 1 :(得分:0)
我有同样的问题。嵌入RapidApi的勺状API时。然后我用了这个:
<?php
$headers = array('Accept' => 'application/json');
$response = Unirest\Request::get("https://spoonacular-recipe-food-nutrition-v1.p.rapidapi.com/recipes/search?number=50&query='.$plus_separated.'",
array(
"X-RapidAPI-Key" => "bc038c4c88mshae2640d....e1acp1301aejsnd5703df78862"
)
);
$array_1 = $response->raw_body;
}
?>
<div id="result_body" class="container">
<P id="allert_msg" class="text-center">Results Not Found</P>
</div>
<script>
var array_2 = '<?php echo $array_1;?>';
var array_3 = JSON.parse(array_2);
var main_array = array_3.results;
var main_array_length = main_array.length;
var i=j=k=l=m=0;
for(i=0; i < main_array_length; i++){
var result_body= document.getElementById("result_body");
var body_link = document.createElement("a");
body_link.setAttribute("class", "single_link");
body_link.setAttribute("target", "_blank");
body_link.setAttribute("href", 'recipe_details.php?id='+main_array[i].id+'&submit_id=OK');
result_body.appendChild(body_link);
var p = document.createElement("div");
p.setAttribute("id", "single_item_"+j++);
p.setAttribute("class", "single_item");
body_link.appendChild(p);
</script>
用于配方搜索。代码自动创建div,a,p等HTML DOM元素,并显示搜索结果。您应该将正确的值放在json格式的正确位置(该位置来自响应)。在上面的代码中,我将响应放入PHP的“ $ array_1”中,然后放入Javascript的“ array_2”中。然后继续使用Javascript进行下一个过程。 如果您在我的代码中遇到错误,并且有更好的主意,请让我知道。谢谢!