[英]Why is my API JSON response not being displayed?
我已经按照在线教程使用 Vue JS 和 fetch 创建了一个电影应用程序。 工作时的功能是我可以搜索电影,屏幕上会显示一些结果,包括海报、标题和年份。 在完成所有工作的教程后,我尝试更改我正在使用的 API(从 omdb 到 themoviedb)。 尝试连接新的 API 后,搜索返回空白。
我已经使用 chrome 上的网络工具来确定我收到了来自 API 的响应,但是在某个地方我出错了,因为没有显示任何内容。 注意:我知道海报不起作用(因为 themoviedb 将其作为不完整的路径返回)但为什么标题和年份不显示? 我在下面添加了我的代码 - 请帮助我了解我所缺少的。
<div class="movie" v-for="movie in movies" :key="movie.imdbID">
<router-link :to="'/movie/' + movie.imdbID" class="movie-link">
<div class="product-image">
<img :src="movie.Poster" alt="Movie Poster" />
<div class="type">{{ movie.Type }}</div>
</div>
<div class="detail">
<p class="year">{{ movie.release_date }}</p>
<p class="imdb">{{ movie.vote_average }} </p>
<h3>{{ movie.original_title}}</h3>
</div>
</router-link>
</div>
</div>
</div>
</template>
<script>
import { ref } from 'vue';
import env from '@/env.js'
export default {
setup () {
const search = ref("");
const movies = ref([]);
const SearchMovies = () => {
if (search.value != "") {
//fetch(`http://www.omdbapi.com/?apikey=${env.apikey}&s=${search.value}`)
fetch(`https://api.themoviedb.org/3/search/movie?api_key=${env.apikey2}&language=en-US&query=${search.value}&page=1&include_adult=false`)
.then(response => response.json())
.then(data => {
movies.value = data.Search;
search.value = "";
});
}
}
return {
search,
movies,
SearchMovies
}
}
}
</script>
不幸的是,对于如何创建面向外部的 API 没有真正的标准,记住每个 API 都决定提供特定的交互接口,以及结果数据的结构。 在您的情况下,响应的Search
属性不再由新的 api 填充 - 它将数据发布到results
属性。 调试是学习和跟踪代码中问题的好方法。
通常您可以在 API 文档中注意到这些差异 - 它非常有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.