import{_ as k,o as t,c as l,a2 as n,j as s,a,t as p}from"./chunks/framework.B-QBKwc1.js";const o=JSON.parse('{"title":"第一个接口调试","description":"本章通过实际操作,带您完成第一个 API 接口的调试,从登录获取 Token 到调用业务接口。","frontmatter":{},"headers":[],"relativePath":"zh/quickstart/first-api.md","filePath":"zh/quickstart/first-api.md"}'),e={name:"zh/quickstart/first-api.md"};function r(h,i,d,F,g,E){return t(),l("div",null,[i[5]||(i[5]=n(`

2.6 第一个接口调试 ​

概述

本章通过实际操作,带您完成第一个 API 接口的调试,从登录获取 Token 到调用业务接口。

调试工具 ​

推荐使用以下工具进行 API 调试:

步骤一:获取验证码 ​

bash
# GET 请求获取验证码(返回 Base64 编码的图片 + 验证码 key)
curl http://localhost:8000/api/captcha

响应示例:

json
{
  "code": 0,
  "ok": true,
  "msg": "操作成功",
  "data": {
    "key": "a1b2c3d4e5f6...",
    "image": "data:image/png;base64,iVBOR..."
  }
}

将 key 保存备用,image 是 Base64 编码的验证码图片。

步骤二:登录获取 Token ​

bash
# -----------------------------------------------------------------------------
# 登录接口(POST + JSON)
# -----------------------------------------------------------------------------
# -X POST                → 使用 POST 方法
# -H "Content-Type: ..." → 告诉服务器请求体是 JSON 格式
# -d '{...}'             → 发送 JSON 请求体
#   username   → 用户名
#   password   → 密码
#   captchaKey → 步骤一返回的验证码 key
#   captchaCode → 验证码图片上显示的字符
curl -X POST http://localhost:8000/api/login \\
  -H "Content-Type: application/json" \\
  -d '{
    "username": "admin",
    "password": "123456",
    "captchaKey": "a1b2c3d4e5f6...",
    "captchaCode": "1234"
  }'

响应示例:

json
{
  "code": 0,
  "ok": true,
  "msg": "登录成功",
  "data": {
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "token_type": "Bearer",
    "expires_in": 7200,
    "user": {
      "id": 1,
      "username": "admin",
      "realname": "管理员",
      "avatar": ""
    }
  }
}

将 access_token 保存备用。

步骤三:调用业务接口 ​

使用 Token 调用需要认证的接口:

bash
# -----------------------------------------------------------------------------
# 获取用户分页列表(GET + Authorization 头)
# -----------------------------------------------------------------------------
# pageNo=1\\&pageSize=10 → 分页参数(\\& 是 bash 转义,防止 & 被解释为后台运行符)
# -H "Authorization: Bearer <token>" → 在请求头中携带 JWT Token
curl http://localhost:8000/api/user/page?pageNo=1\\&pageSize=10 \\
  -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."

响应示例:

json
{
  "code": 0,
  "ok": true,
  "msg": "操作成功",
  "data": {
    "records": [
      {
        "id": 1,
        "username": "admin",
        "realname": "管理员",
        "status": 1,
        "statusText": "启用",
        "createTime": "2026-01-01 00:00:00"
      }
    ],
    "total": 1,
    "size": 10,
    "current": 1,
    "pages": 1
  }
}

步骤四:测试其他接口 ​

bash
# -----------------------------------------------------------------------------
# 获取当前登录用户信息
# -----------------------------------------------------------------------------
curl http://localhost:8000/api/index/getUser \\
  -H "Authorization: Bearer <your_token>"

# -----------------------------------------------------------------------------
# 获取当前用户的菜单列表(用于前端动态路由)
# -----------------------------------------------------------------------------
curl http://localhost:8000/api/index/getMenus \\
  -H "Authorization: Bearer <your_token>"

# -----------------------------------------------------------------------------
# 获取字典项(gender = 性别字典的编码)
# -----------------------------------------------------------------------------
curl http://localhost:8000/api/dict/item/getDictItemList/gender \\
  -H "Authorization: Bearer <your_token>"

# -----------------------------------------------------------------------------
# 刷新 Token(access_token 过期后,用 refresh_token 换取新的)
# -----------------------------------------------------------------------------
curl -X POST http://localhost:8000/api/oauth2/token \\
  -H "Content-Type: application/json" \\
  -d '{"grant_type": "refresh_token", "refresh_token": "<your_refresh_token>"}'

错误响应示例 ​

401 未授权(Token 缺失或无效) ​

json
{
  "code": 401,
  "ok": false,
  "msg": "未提供认证令牌",
  "data": null
}

403 禁止访问(权限不足) ​

json
{
  "code": 403,
  "ok": false,
  "msg": "无访问权限:用户列表",
  "data": null
}

422 参数验证失败 ​

json
{
  "code": 1,
  "ok": false,
  "msg": "参数验证失败",
  "data": {
    "username": "用户名不能为空"
  }
}

ApiFox 配置建议 ​

`,30)),s("ol",null,[i[3]||(i[3]=s("li",null,[s("p",null,"创建环境,设置变量:"),s("ul",null,[s("li",null,[s("code",null,"base_url"),a(" = "),s("code",null,"http://localhost:8000")]),s("li",null,[s("code",null,"token"),a(" = 登录后填入 access_token")])])],-1)),s("li",null,[i[2]||(i[2]=s("p",null,"在请求头中使用变量:",-1)),s("ul",null,[s("li",null,[i[0]||(i[0]=s("code",null,"Authorization",-1)),i[1]||(i[1]=a(" = ",-1)),s("code",null,"Bearer "+p(h.token),1)])])]),i[4]||(i[4]=n(`
  • 登录请求的「后置操作」中添加脚本自动保存 Token:

    javascript
    // 解析响应 JSON
    var response = pm.response.json();
    // 登录成功时自动将 access_token 保存到环境变量
    if (response.code === 0) {
        pm.environment.set("token", response.data.access_token);
    }
  • `,1))])])}const c=k(e,[["render",r]]);export{o as __pageData,c as default};