axios-config.ts.ftl(Axios 全局配置模板文件参考)

vue中axios配置文件最新版 【代码】vue中axios配置文件最新版。 阅读详情

✅ axios-config.ts.ftl 模板文件 —— Axios 全局配置模板

强烈推荐创建此模板文件!Axios 全局配置是前端项目的基础核心,直接影响 API 调用可靠性、错误处理一致性、安全性 和 开发效率。通过模板自动生成标准化配置,可避免团队成员重复造轮子,确保项目质量统一。


📋 为什么需要 axios-config.ts.ftl?

问题手动配置风险模板生成优势
基础配置重复每个项目都要重写 baseURL、超时等一次定义,处处生成
错误处理不一致不同开发者处理方式不同统一错误提示和重试逻辑
安全漏洞忘记添加认证头、敏感信息泄露自动集成安全最佳实践
调试困难缺少请求日志自动生成调试日志
维护成本高配置分散在各处集中管理,一键更新

💡 核心价值:标准化 + 安全性 + 可维护性


📄 详细说明文档

1. 配置层级设计

Axios 实例
请求拦截器
响应拦截器
添加认证头
请求日志
参数序列化
统一错误处理
业务状态码处理
响应日志
自动重试

2. 关键功能覆盖

  • ✅ 基础配置:baseURL、超时、Content-Type
  • ✅ 认证集成:自动添加 JWT Token
  • ✅ 错误处理:网络错误、HTTP 错误、业务错误
  • ✅ 安全防护:敏感信息过滤、XSRF 防护
  • ✅ 调试支持:开发环境请求/响应日志
  • ✅ 高级特性:请求取消、自动重试、加载状态

3. 环境适配

  • 🌐 开发环境:代理配置、详细日志
  • 🚀 生产环境:错误上报、性能优化

📝 具有实际开发参考意义的示例

/**
 * Axios 全局配置
 *
 * 【设计目标】
 * 1. 统一所有 API 请求的基础配置
 * 2. 集成认证、错误处理、日志等横切关注点
 * 3. 支持环境差异化配置(开发/生产)
 * 4. 提供类型安全的请求/响应处理
 *
 * 【核心特性】
 * - 自动添加认证头(从 Pinia/Vuex 获取 token)
 * - 统一处理网络错误、HTTP 错误、业务错误
 * - 开发环境记录详细请求日志
 * - 生产环境自动上报错误到监控系统
 * - 支持请求取消和自动重试
 *
 * @author ${author}
 * @since ${date}
 */

import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios';
import { ElMessage, ElMessageBox } from 'element-plus';
import { useUserStore } from '@/store/user'; // 假设使用 Pinia 管理用户状态

// ==================== 基础配置 ====================

/**
 * 创建 Axios 实例
 *
 * <p>
 * 【配置说明】
 * - baseURL: API 基础路径(从环境变量读取)
 * - timeout: 请求超时时间(毫秒)
 * - withCredentials: 是否携带 Cookie(跨域场景)
 * - headers: 默认请求头
 * </p>
 *
 * <p>
 * 【环境变量建议】
 * - VITE_API_BASE_URL: 开发环境代理路径
 * - VITE_API_TIMEOUT: 超时时间(默认 10000ms)
 * </p>
 */
const service: AxiosInstance = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL || '/api',
  timeout: Number(import.meta.env.VITE_API_TIMEOUT) || 10000,
  withCredentials: false, // 跨域请求是否需要凭证
  headers: {
    'Content-Type': 'application/json;charset=UTF-8'
  }
});

// ==================== 请求拦截器 ====================

/**
 * 请求拦截器
 *
 * <p>
 * 【执行时机】
 * 在请求发送前执行
 * </p>
 *
 * <p>
 * 【核心功能】
 * 1. 添加认证 Token(从用户 Store 获取)
 * 2. 开发环境记录请求日志
 * 3. 参数预处理(如时间格式转换)
 * 4. 敏感信息过滤(防止意外泄露)
 * </p>
 *
 * @param config Axios 请求配置
 * @returns 处理后的配置
 */
service.interceptors.request.use(
  (config: InternalAxiosRequestConfig) => {
    // 1. 添加认证 Token
    const userStore = useUserStore();
    if (userStore.token) {
      // Bearer Token 格式(根据后端要求调整)
      config.headers.Authorization = `Bearer ${userStore.token}`;
    }

    // 2. 开发环境记录请求日志
    if (import.meta.env.DEV) {
      console.log('🚀 [Axios Request]', {
        url: config.url,
        method: config.method,
        params: config.params,
        data: config.data
      });
    }

    // 3. 敏感信息过滤(示例:移除密码字段)
    // 注意:实际应在 DTO 层处理,此处为双重保险
    if (config.data && typeof config.data === 'object') {
      const sensitiveFields = ['password', 'confirmPassword', 'oldPassword'];
      sensitiveFields.forEach(field => {
        if (field in config.data) {
          delete config.data[field];
        }
      });
    }

    return config;
  },
  (error) => {
    // 请求配置错误(如 baseURL 无效)
    console.error('❌ [Axios Request Error]', error);
    return Promise.reject(error);
  }
);

// ==================== 响应拦截器 ====================

/**
 * 响应拦截器
 *
 * <p>
 * 【执行时机】
 * 在收到响应后、返回给调用方前执行
 * </p>
 *
 * <p>
 * 【错误处理优先级】
 * 1. 网络错误(如断网、超时)
 * 2. HTTP 状态码错误(4xx/5xx)
 * 3. 业务状态码错误(code !== 200)
 * 4. 成功响应(code === 200)
 * </p>
 *
 * @param response Axios 响应对象
 * @returns 处理后的数据或拒绝的 Promise
 */
service.interceptors.response.use(
  (response: AxiosResponse) => {
    // 开发环境记录响应日志
    if (import.meta.env.DEV) {
      console.log('✅ [Axios Response]', {
        url: response.config.url,
        status: response.status,
        data: response.data
      });
    }

    const { code, message, data } = response.data;

    // 业务成功(code === 200)
    if (code === 200) {
      return data; // 直接返回业务数据,简化调用方处理
    }

    // 业务失败(code !== 200)
    // 根据错误码做差异化处理
    switch (code) {
      case 401: // 未认证
        handleUnauthorized();
        break;
      case 403: // 无权限
        ElMessage.warning('无权限访问');
        break;
      case 404: // 资源不存在
        ElMessage.warning('请求资源不存在');
        break;
      case 500: // 系统错误
        handleSystemError(message);
        break;
      default: // 业务自定义错误
        ElMessage.error(message || '操作失败');
    }

    // 返回拒绝的 Promise,调用方可选择 catch 处理
    return Promise.reject(new Error(message || '未知错误'));
  },
  (error) => {
    // 网络错误或 HTTP 状态码错误(如 404, 500)
    if (error.response) {
      // HTTP 状态码错误
      const { status, statusText } = error.response;
      let message = '';
      
      switch (status) {
        case 400:
          message = '请求参数错误';
          break;
        case 401:
          handleUnauthorized();
          return Promise.reject(error);
        case 403:
          message = '无权限访问';
          break;
        case 404:
          message = '请求地址不存在';
          break;
        case 500:
          message = '服务器内部错误';
          handleSystemError(statusText);
          break;
        default:
          message = `请求失败 (${status})`;
      }
      
      ElMessage.error(message);
    } else if (error.request) {
      // 网络错误(如断网、超时)
      if (error.code === 'ECONNABORTED') {
        ElMessage.error('请求超时,请检查网络');
      } else {
        ElMessage.error('网络连接异常,请检查网络');
      }
      
      // 生产环境上报网络错误
      if (import.meta.env.PROD) {
        reportNetworkError(error);
      }
    } else {
      // 请求配置错误
      ElMessage.error('请求配置错误');
    }

    console.error('❌ [Axios Response Error]', error);
    return Promise.reject(error);
  }
);

// ==================== 私有工具方法 ====================

/**
 * 处理未认证错误(401)
 *
 * <p>
 * 【处理流程】
 * 1. 清除本地用户状态(token、用户信息等)
 * 2. 弹出确认框询问是否重新登录
 * 3. 跳转到登录页
 * </p>
 */
function handleUnauthorized(): void {
  const userStore = useUserStore();
  
  ElMessageBox.confirm(
    '登录已过期,请重新登录',
    '提示',
    {
      confirmButtonText: '重新登录',
      cancelButtonText: '取消',
      type: 'warning'
    }
  ).then(() => {
    userStore.logout(); // 清除本地状态
    window.location.href = '/login'; // 跳转登录页
  }).catch(() => {
    userStore.logout();
  });
}

/**
 * 处理系统错误(500)
 *
 * <p>
 * 【处理策略】
 * - 开发环境:显示详细错误信息
 * - 生产环境:显示通用提示,上报错误
 * </p>
 *
 * @param message 错误消息
 */
function handleSystemError(message: string): void {
  if (import.meta.env.DEV) {
    ElMessage.error(`系统错误: ${message}`);
  } else {
    ElMessage.error('系统繁忙,请稍后再试');
    // 上报错误到监控系统(如 Sentry)
    reportSystemError(message);
  }
}

/**
 * 上报系统错误到监控平台
 *
 * <p>
 * 【实现建议】
 * - 集成 Sentry、Bugsnag 等错误监控服务
 * - 包含用户信息、设备信息、错误堆栈
 * - 避免频繁上报(添加防抖)
 * </p>
 *
 * @param message 错误消息
 */
function reportSystemError(message: string): void {
  // 示例:Sentry 上报
  // if (window.Sentry) {
  //   window.Sentry.captureMessage(message);
  // }
  console.warn('🚨 [System Error Reported]', message);
}

/**
 * 上报网络错误
 *
 * @param error 网络错误对象
 */
function reportNetworkError(error: any): void {
  // 示例:自定义错误上报
  // fetch('/api/error-report', {
  //   method: 'POST',
  //   body: JSON.stringify({ type: 'network', error: error.message })
  // });
  console.warn('📡 [Network Error Reported]', error.message);
}

// ==================== 导出配置 ====================

/**
 * 导出 Axios 实例
 *
 * <p>
 * 【使用方式】
 * import request from '@/utils/axios-config';
 * 
 * // 直接调用(已处理业务数据)
 * const userData = await request.get('/user/1');
 * 
 * // 或通过 api.ts 封装
 * import { getUserDetail } from '@/api/user';
 * const userData = await getUserDetail(1);
 * </p>
 */
export default service;

🔍 关键设计说明

1. 认证集成策略

  • Token 存储:从 Pinia Store 获取(避免 localStorage XSS 风险)
  • Header 格式:Bearer ${token}(符合 JWT 标准)
  • 自动刷新:可在 401 处理中集成 token 刷新逻辑

2. 错误处理分层

错误类型处理方式用户体验
网络错误检查网络状态,友好提示“网络连接异常”
HTTP 4xx根据状态码差异化处理精准提示(如"参数错误")
业务错误根据 code 字段处理业务语义化提示
系统错误通用提示 + 错误上报“系统繁忙,请稍后再试”

3. 安全防护措施

  • 敏感字段过滤:双重保险防止密码泄露
  • Token 安全:避免 localStorage 存储(XSS 风险)
  • 错误信息脱敏:生产环境不暴露详细错误

4. 环境差异化

  • 开发环境:详细日志,便于调试
  • 生产环境:错误上报,用户体验优先

5. 扩展性设计

  • 错误上报钩子:预留 Sentry/Bugsnag 集成点
  • 认证扩展:支持 OAuth2、Session 等多种方式
  • 拦截器链:可添加更多拦截器(如性能监控)

🛠️ 配套使用建议

1. 环境变量配置(.env)

# .env.development
VITE_API_BASE_URL=/api
VITE_API_TIMEOUT=10000

# .env.production  
VITE_API_BASE_URL=https://api.yourdomain.com
VITE_API_TIMEOUT=15000

2. 用户 Store 示例(Pinia)

// store/user.ts
export const useUserStore = defineStore('user', {
  state: () => ({
    token: localStorage.getItem('token') || '',
    userInfo: null as UserInfo | null
  }),
  actions: {
    logout() {
      this.token = '';
      this.userInfo = null;
      localStorage.removeItem('token');
    }
  }
});

3. API 调用示例

// api/user.ts
import request from '@/utils/axios-config';

export function getUserDetail(id: number) {
  return request.get<UserDetailRes>(`/user/${id}`);
}

// 组件中使用
const user = await getUserDetail(1); // 直接获得 UserDetailRes 类型数据

✅ 此模板文件是 前端项目稳定性的基石,正确配置后可:

  • 提升用户体验:精准的错误提示和自动处理
  • 增强系统安全:认证集成和敏感信息防护
  • 降低维护成本:统一错误处理逻辑
  • 提高开发效率:标准化配置,减少重复工作

可直接用于企业级项目,是高质量前端工程的必备组件。

一周交付简版Dify:Claude Code全链路AI工程实践 AI Agent并非抽象概念,而是可拆解、可编排、可落地的软件系统。其核心原理在于将自然语言指令转化为确定性函数调用序列,依赖Prompt编排、工具调度与上下文感知执行。技术价值体现在快速验证业务逻辑闭环,显著降低MVP试错成本。典型应用场景包括政务知识库问答、政策智能检索、售前演示系统等轻量级AI助手构建。本实践以Spring Boot为骨架、Claude Code为工程加速器、H2+TF-IDF实现极简RAG,完整覆盖需求分析、模块编码、容器打包与安全加固——不依赖复杂向量库,不强求分布式架构,专注‘最 阅读详情

相关推荐

PC微信(3.9.2.23)逆向实战:定位并Hook消息接收函数

本文详细介绍了PC微信(3.9.2.23)逆向分析中定位并Hook消息接收函数的完整实战流程。通过Cheat Engine动态定位未读消息数内存地址,结合OllyDbg分析代码上下文,最终找到稳定的Hook点,并分享了实战中的关键注意事项与踩坑经验。

lll78的博客 472

axios的config配置详解

本文对axios官网文档的config配置部分进行了翻译与部分举例,原版请前往 axios { // ‘url’是用于请求的服务器 URL。 url: '/user', // ‘method’是发出请求时使用的请求方法。 method: 'get', // 默认值 // 除非 url 是绝对的,否则 baseURL 将会被加在 url 前面。 // 为 axios 的实例设置‘baseURL’来传递相对 url 会很方便。 // 可以减去许多重复的字段。 baseURL:

coder-quan的博客 1万+

UE4-(IK)实现人物脚贴合地面解决斜坡上脚无旋转无法贴合地面问题

在斜面上脚陷入模型中,需要设置旋转值对脚的骨骼进行一个旋转。 解决思路:在射线检测中可以获取到检测点的法线方向,根据法线方向来计算出脚应该向哪个方向进行适当的旋转,在斜坡上,人物脚需要旋转的轴为x轴和y轴以便来贴合地面,z轴方向的旋转是不需要进行修改的。 如图所示,我们需要求得水平面与斜坡的夹角用来得出人物在x轴上的脚旋转量,在蓝图中提供反正切函数,反正切 = 锐角的邻边/对边 所以 反正切值(脚x轴值(roll)) = 法线Y轴值/法线Z轴 值。 现在将上图的人物想象成面向屏幕,脚需...

Stone的博客 3315

axios的配置对象说明(config)

文章目录axios的配置对象(config) axios的配置对象(config) 这些是用于发出请求的可用配置选项 { // `url` is the server URL that will be used for the request url: '/user', // `method` is the request method to be used when making the request method: 'get', // default // `baseURL`

十八岁讨厌编程的博客 8440

《QMT量化实战系列》支持自定义筛选与排序的多因子策略,实测年化收益超100% (1)

公众号推出《QMT量化实战》系列,通过多维度、多策略、多场景讲解QMT量化平台应用,每期附代码解读。本期复现《支持自定义筛选与排序的多因子策略》,策略包含三大核心模块:1. 通过Tushare获取30+财务因子数据;2. 提供灵活筛选机制(支持排除ST股、次新股及特定板块);3. 创新性多因子加权排序系统(支持自定义因子权重组合)。交易逻辑包含动态调仓机制,当持仓标的排名低于阈值时触发卖出。该策略具有高度可配置性,适合不同风险偏好的投资者。(149字)

qq_46262068的博客 1728

华为CNA VRM搭建(使用vmware worfstartion搭建)

华为CNA和VRM在 vmware workstation安装使用

weixin_70595351的博客 1809

Vue.js 学习笔记十六:Axios 之全局配置和请求配置

目录 全局配置 请求配置 全局配置 在之前的示例中, 我们的 baseURL 是固定的。事实上,在开发中可能很多参数都是固定的。 这个时候我们可以进行一些抽取,也可以利用 axiox 的全局配置。 axios.defaults.baseURL = 'http://127.0.0.1:8000' axios.defaults.headers.common['Authorization'] = AUTH_TOKEN axios.defaults.headers.post['Content-Ty...

Stary 的 IT 之旅 1284

Python地理数据处理 十七:植被物候提取和分析(Savitzky-Golay)

植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气、水、土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标。此外,由于生态工程保护建设和植被自然生长等因素,中国陆地生态系统发挥了重要的碳汇作用。因此,定量评估植被时空动态变化是制定生态系统可持续发展目标和衡量生态系统固碳潜力的重要前提,卫星遥感数据衍生的生态参量产品为研究长时间序列全球及区域植被时空变化提供了重要数据源。SG滤波能够对物候信息进行平滑,并提取其中的物候信息

amyniez的博客,欢迎交流讨论 4246

配置axios

配置axios。

m0_46338687的博客 398

“/usr/lib/wsl/wsl-setup“ failed, exiting

WSL2安装Ubuntu时出现"wsl-setup failed"错误的解决方法 摘要:当Windows用户名包含中文字符时,安装WSL2+Ubuntu会出现"wsl-setup failed"错误。本文提供两种解决方案:1)修改中文用户名(风险较大);2)通过命令手动配置。推荐第二种方法:先使用"wsl -l -v"查看Ubuntu名称,再通过"wsl -d Ubuntu20.04 -e /bin/bash"命令启动WSL2系

猿小白的博客 993

D19: OpenClaw 安全性配置指南

在 OpenClaw 的 30 天探索旅程中,我们已经探讨了邮件自动化(D18)。今天进入安全专题,我将分享一个至关重要的话题:OpenClaw 安全性配置指南。 随着 OpenClaw 深入工作流核心,它掌握了越来越多的敏感信息: API Keys(GitHub、飞书、Notion、Jira...) 企业数据(代码库、文档、聊天记录) 个人数据(日历、邮件、任务) 系统权限(文件读写、命令执行、网络访问) 安全不是可选项,而是必选项。一次配置失误可能导致: API Key 泄露 → 账号被盗用权限

刘一说的IT专栏 203

OpenCode Tool:从代码生成到开发工作流自动化的核心实践

代码生成是提升软件工程效率的关键技术,其核心原理在于通过模板引擎将数据模型转换为可执行代码,实现开发流程的标准化与自动化。这项技术的核心价值在于显著减少重复劳动、统一代码规范,并确保架构一致性,尤其适用于微服务、云原生等需要快速迭代和规范统一的现代应用场景。OpenCode Tool作为一个典型的工具链生态系统,深度集成了模板渲染、插件扩展与配置即代码等机制,能够高效处理领域实体生成、API联动、基础设施即代码等高频需求。通过将标准化和自动化理念融入开发工作流,它帮助团队从繁琐的CRUD和YAML编写中解放

weixin_34221332的博客 394

【OpenClaw从入门到精通】零基础入门——OpenClaw核心概念快速理解(2026入门版)

OpenClaw是一个强大的AI代理框架,旨在构建智能化的自动化任务处理系统。随着人工智能技术的快速发展,OpenClaw为开发者和企业提供了一个完整的解决方案,用于创建能够理解、学习和执行复杂任务的智能体。本文将带领零基础的读者快速理解OpenClaw的核心概念,从基础架构到实际应用,为后续深入学习奠定坚实基础。通过本文的学习,你将掌握OpenClaw的基本原理、核心组件和快速上手方法。

一键难忘的博客 323

AI编程工具选型:从协作场景与确定性出发的决策框架

AI编程助手本质上是开发者在复杂系统工程中的‘第二大脑’,其核心价值不在于代码生成速度,而在于对项目上下文、领域语义和运行约束的深度理解。免费工具常因缺乏项目级语义索引、运行环境感知与错误归因能力,陷入词法幻觉与归因错位;付费方案则通过可控上下文边界、可追溯决策路径和版本化干预痕迹,构建起人机协作的可信契约。本文聚焦工业视觉、金融Java、电商微服务等真实技术栈,解析AI编程工具在代码理解、文档补全、调试辅助、测试生成与API校验五大高频场景中的能力分层与落地逻辑,尤其深入TRAe CLI集成、Copilo

weixin_34406086的博客 487

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

axios的简单理解

axios的简单理解

THKTHK1024的博客 679

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

axios基本使用

Get请求 后端发送的json数据,显示到浏览器上 使用Axios发送get的不带参数请求 首先引入axios <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 编写JavaScript代码 <script> axios.get('/teachers/findByPage') .then(function (response) {

攻城狮 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

axios 配置文件

【代码】axios 配置文件。

m0_46685484的博客 241

axios的基本使用

Axios是专注于的库。相比于原生的对象,axios。相比于jQuery,axios更加,只专注于网络数据请求。文档: https://github.com/axios/axios。

qq_56088882的博客 7589

axios封装时对config参数的一点思考

封装 get、post、put、delete方法,之前都是秉持着“能用就行”的原则,力图简单快速,直接砍掉了方法自带的config参数,仅留下了 url、data 两个,其他配置参数(baseURL、headers…于是乎就纠结默认值的问题,之前没传的时候,底层获取到的是。的假象,就打开源码一探究性(主要是我也很好奇他的很多东西,正好这个机会去䁖一䁖🤣)。,但是由于之前封装的时候失误,没有用实例而是直接用 axios 封装,导致出现。但是随着不同需求的出现,问题也暴露了:请求不够灵活,没法单独定制。

薛定谔的壳的博客 1148

VUE3 + TS + PINIA + LESS + AXIOS + VUE-ROUTER + ELEMENT-PLUS创建完整项目并配置完成全步骤

Vue3+ts+pinia+less+element-plus项目创建并配置完成全步骤

yancy_peng的博客 1547

前端项目经验 —— axios 的使用和配置

在前端请求接口一般会使用 Ajax,但是在项目中使用 axios 能使我们更好的维护和阅读;axios 是经过封装好的 Ajax,有内置请求拦截器和响应拦截器等好处,在写代码时也方便我们统一代码风格;接下来将为你介绍如何使用 axios。

weixin_52872413的博客 1058

axios

asiox 1.介绍:基于Promise的纯粹的ajax库 2.API 1)底层接口 axios(config) 2)快捷接口 axios.get(url,[config])查询 axios.post(url,[data],[config]) axios.delete(url,[config])删除 axios.put(url,[data],[config])修改 axios.defouts,默认...

sl_68730的博客 324

【axios】vue中axios的请求配置

vue中使用axios的完整配置TS版。

qq_39404437的博客 2814

【无标题】axios请求拦截器中的config

因此,通过拦截器的方式,在每个请求发送之前,可以动态地在请求配置中设置一些参数,这对于需要在每个请求中添加类似身份验证信息、请求头等信息的情况非常有用。对象,你可以设置请求头、修改请求体内容、设置请求的 URL 等等。是一个包含请求配置的对象,比如请求头、请求体、URL 等信息。这个拦截器函数允许你在请求发送之前修改请求配置。的设置就是为了向请求头添加身份验证所需的 token。接收一个函数作为参数,这个函数有一个参数。在 Axios 中,拦截器函数。

谁偷了我的小熊饼干 1139

axios基础配置

axios基础配置

xiaoming4965的博客 393

使用ts封装一个Axios请求

使用ts封装一个axios请求

wgh2820777641的博客 4185
上一篇: api.ts.ftl 和 types.ts.ftl(TypeScript 模板参考示例1)
下一篇: api.ts.ftl 和 types.ts.ftl 模板文件参考示例2
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值