You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Axios从localhost:8080/omdb的JSON数据中提取标题、年份与imdbID?

从本地OMDB接口提取指定字段的Vue实现方案

嘿,我看你想用Vue和Axios从localhost:8080/omdb接口里提取TitleYearimdbID字段对吧?我帮你把代码补全并优化了,直接就能用:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Web Project 2018</title>
    <link rel="stylesheet" href="">
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
    <div id="app">
        <h2>OMDB 电影信息列表</h2>
        <!-- 有数据时渲染列表 -->
        <ul v-if="movies.length > 0">
            <li v-for="(movie, index) in movies" :key="index">
                <strong>电影标题:</strong> {{ movie.Title }}<br>
                <strong>上映年份:</strong> {{ movie.Year }}<br>
                <strong>IMDB编号:</strong> {{ movie.imdbID }}
                <hr>
            </li>
        </ul>
        <!-- 无数据或加载中时显示提示 -->
        <p v-else>正在加载数据...或暂无数据</p>
    </div>

    <script>
        new Vue({
            el: '#app',
            data() {
                return {
                    movies: [] // 存储提取后的电影数据
                }
            },
            // 页面DOM加载完成后发起请求
            mounted() {
                this.getOMDBData();
            },
            methods: {
                // 异步获取并处理数据
                async getOMDBData() {
                    try {
                        // 请求本地OMDB接口
                        const res = await axios.get('http://localhost:8080/omdb');
                        
                        // 适配接口返回结构:如果是OMDB标准格式(带Search数组)就取Search,否则直接用返回的数组
                        const rawMovies = res.data.Search || res.data;
                        
                        // 只提取我们需要的三个字段,生成新数组
                        this.movies = rawMovies.map(item => ({
                            Title: item.Title,
                            Year: item.Year,
                            imdbID: item.imdbID
                        }));
                    } catch (err) {
                        // 捕获请求错误,方便调试和提示用户
                        console.error('数据加载失败:', err);
                        alert('加载电影信息出错,请检查接口是否正常运行');
                    }
                }
            }
        });
    </script>
</body>
</html>

几个关键说明:

  • 模板渲染:用v-if/v-else处理加载状态,v-for循环展示提取后的字段,确保页面状态清晰。
  • 数据处理:用map方法过滤出我们需要的三个字段,避免把接口返回的冗余数据也存到Vue实例里。
  • 错误处理:添加了try/catch捕获请求异常,既能在控制台看错误详情,也会给用户友好提示。
  • 结构适配:考虑到OMDB官方接口返回的是带Search数组的结构,这里做了兼容,如果你的本地接口直接返回电影数组,代码也能正常工作。

注意事项:

  • 确保你的localhost:8080/omdb接口正常运行,返回的每个电影对象确实包含TitleYearimdbID这三个字段(注意字段名的大小写,OMDB返回的是首字母大写)。
  • 如果你的接口字段名是小写(比如titleyear),记得在map里把对应字段名改成你实际的。
  • 可以自己加CSS样式美化列表,让页面更好看。

内容的提问来源于stack exchange,提问作者Tibo

火山引擎 最新活动