You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从getData.js获取Axios请求响应并在App.js中展示

如何从getData.js获取请求数据并在App.js中展示

第一步:改造getData.js,导出可复用的数据请求函数

原代码存在几个问题需要修复:

  • int_access_token未从token接口响应中提取
  • int_personData未定义
  • 嵌套then写法不利于维护,且没有导出接口给外部调用

改造后的代码如下:

// getData.js
import axios from 'axios';

// 替换为你的实际接口地址,也可以改为参数传入以提升灵活性
const token_url = '你的Token接口地址';
const get_data_url = '你的数据接口地址';

// 导出一个异步函数,返回请求到的数据
export const fetchTargetData = async () => {
  try {
    // 1. 请求获取Token
    const tokenResponse = await axios.post(token_url, { grant_type: 'client_credentials' }, {
      headers: {
        "Authorization": `Basic ${Buffer.from(`${process.env.int_client_id}:${process.env.int_client_secret}`).toString('base64')}`,
        "Content-Type": 'application/x-www-form-urlencoded'
      }
    });

    // 从Token响应中提取access_token,字段名根据实际接口返回调整
    const accessToken = tokenResponse.data.access_token;
    // 补充你的实际请求参数,比如要提交给数据接口的person数据
    const personData = { /* 你的请求参数,比如name, id等 */ };

    // 2. 使用Token请求目标数据
    const dataResponse = await axios.post(get_data_url, personData, {
      headers: {
        "Authorization": `Bearer ${accessToken}`
      }
    });

    // 返回最终获取到的数据
    return dataResponse.data;
  } catch (error) {
    console.error('数据请求失败:', error);
    // 抛出错误让调用方处理
    throw error;
  }
};

第二步:在App.js中导入函数并获取、展示数据

根据你的项目类型,有不同的实现方式:

情况1:普通JavaScript项目

// App.js
import { fetchTargetData } from './getData.js';

// 页面加载完成后调用函数
document.addEventListener('DOMContentLoaded', async () => {
  try {
    const data = await fetchTargetData();
    // 将数据展示到页面,比如插入到指定容器
    const dataContainer = document.getElementById('data-display');
    // 用JSON格式化展示,也可以根据数据结构生成自定义HTML
    dataContainer.innerHTML = `<pre>${JSON.stringify(data, null, 2)}</pre>`;
  } catch (error) {
    document.getElementById('data-display').textContent = `加载失败: ${error.message}`;
  }
});

情况2:React项目

// App.js
import { useState, useEffect } from 'react';
import { fetchTargetData } from './getData.js';

export default function App() {
  const [targetData, setTargetData] = useState(null);
  const [loadError, setLoadError] = useState(null);

  useEffect(() => {
    // 异步加载数据
    const loadData = async () => {
      try {
        const data = await fetchTargetData();
        setTargetData(data);
      } catch (err) {
        setLoadError(err.message);
      }
    };

    loadData();
  }, []);

  return (
    <div>
      {loadError && <p className="error">加载出错: {loadError}</p>}
      {targetData ? (
        <pre>{JSON.stringify(targetData, null, 2)}</pre>
      ) : (
        <p>数据加载中...</p>
      )}
    </div>
  );
}

关键说明

  • 确保process.env.int_client_id和process.env.int_client_secret已正确配置,能正常读取环境变量
  • 接口返回的access_token字段名可能与示例不同,请根据实际接口文档调整
  • personData需要替换为你实际要提交给数据接口的参数

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 01:37:44