为什么我的 API JSON 回复没有显示?

Why is my API JSON response not being displayed?

我按照在线教程使用 Vue JS 和 fetch 创建了一个电影应用程序。工作时的功能是我可以搜索电影,屏幕上会显示许多结果,包括海报、标题和年份。在完成本教程且一切正常后,我尝试更改我正在使用的 API(从 omdb 到 themoviedb)。尝试连接新API后,搜索returns空白。

我已经在 chrome 上使用网络工具来确定我正在接收来自 API 的响应,但是我哪里出错了,因为没有显示任何内容。注意:我知道海报不会工作(因为 themoviedb returns 这是一个不完整的路径)但为什么标题和年份不会显示?我在下面添加了我的代码 - 请帮助我了解我缺少的内容。

      <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 文档中注意到这些差异 - 这非常有用。