文字游戏
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

4.7 KiB

🎯 Axios API 集成 - 一句话总结

你问的问题

是不是少了axios相关的东西?调用后台接口,后台接口会传递json数据上来,我应该怎么做?你只用做一个登录示例就可以了。

答案

已为你完成! 完整的 axios 配置和登录 API 示例已创建。


📂 新增文件

API 层(前端代码)

src/api/
├── index.ts           ← axios 实例 + 拦截器
│   • baseURL 自动添加 API 前缀
│   • 请求拦截器自动添加 token
│   • 响应拦截器自动处理错误
│
└── auth.ts           ← 登录 API
    • loginApi(username, password) - 调用 POST /api/auth/login
    • logoutApi() 
    • getUserInfoApi()
    • 完整的 TypeScript 类型定义

环境配置

.env.development       ← API 地址:http://localhost:3000/api
.env.production        ← API 地址:https://api.example.com/api
.env.local             ← 本地覆盖

文档

WHAT_TO_DO_NEXT.md              ← 👈 你接下来该做什么(先读这个)
API_IMPLEMENTATION_COMPLETE.md  ← 完整总结
API_INTEGRATION_GUIDE.md         ← 详细教程
BACKEND_API_EXAMPLE.md           ← 后端代码示例
API_QUICK_REFERENCE.md           ← 快速参考

🔄 工作流程

简单版本

用户登录
  ↓
await authStore.login(username, password)
  ↓
loginApi(credentials)
  ↓
http.post('/auth/login', credentials)
  ↓
axios 拦截器处理
  ↓
POST http://localhost:3000/api/auth/login
  ↓
后端返回 JSON
  ↓
axios 拦截器提取 response.data
  ↓
前端收到数据
  ↓
保存 token 和 user 到 localStorage
  ↓
登录成功!

💻 后端返回的 JSON 格式

你的后端需要返回这样的格式:

{
  "code": 200,
  "message": "登录成功",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "user": {
      "id": "1",
      "username": "admin",
      "email": "admin@example.com",
      "role": "admin"
    }
  }
}

关键点:

  • code 必须是 200 表示成功
  • data.token 是 JWT,后续请求会自动在 Authorization: Bearer <token> 中发送
  • data.user 包含用户信息

🚀 立即测试

选项 1:使用提供的后端示例

# 创建后端项目
mkdir admin-backend && cd admin-backend
npm init -y && npm install express cors jsonwebtoken

# 复制 BACKEND_API_EXAMPLE.md 中的代码到 server.js
# 然后运行
node server.js

# 在另一个终端启动前端
npm run dev

# 访问 http://localhost:5173
# 输入 admin / 123456 登录

选项 2:集成你自己的后端

  1. 实现 POST /api/auth/login 接口
  2. 返回上述格式的 JSON
  3. 配置 CORS
  4. 启动后端
  5. 运行 npm run dev
  6. 测试登录

📝 代码示例

在组件中使用(已更新)

import { useAuthStore } from '@/stores/auth'

const authStore = useAuthStore()

// 登录
const success = await authStore.login('admin', '123456')
if (success) {
  console.log('登录成功!')
}

// 获取当前用户
console.log(authStore.user)
console.log(authStore.token)

// 登出
await authStore.logout()

添加新的 API(参考登录示例)

// src/api/users.ts
import http from './index'

export const getUsersApi = () => {
  return http.get('/users')
}

export const createUserApi = (data) => {
  return http.post('/users', data)
}

// 在组件中使用
const response = await getUsersApi()
if (response.code === 200) {
  console.log(response.data)
}

检查清单

前端( 已完成)

  • Axios 配置
  • 拦截器设置
  • API 服务层
  • 登录示例
  • TypeScript 类型
  • 环境配置

你需要做( 待实施)

  • 实现后端登录接口
  • 配置 CORS
  • 启动后端
  • 测试集成

📚 快速参考

需求 文件 说明
快速上手 WHAT_TO_DO_NEXT.md 下一步该做什么
详细教程 API_INTEGRATION_GUIDE.md 完整 API 使用指南
后端参考 BACKEND_API_EXAMPLE.md Node.js/Python 实现
代码参考 API_QUICK_REFERENCE.md 快速代码片段
原理说明 API_IMPLEMENTATION_COMPLETE.md 完整工作流程

🎉 总结

✅ 前端:完整的 API 层 + 登录示例
⏳ 你的工作:实现后端 API + 配置 CORS + 测试

预计时间:15 分钟
结果:功能完整的登录系统

现在就开始吧! 🚀


相关文档快速链接: