Apifox 帮助文档
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
  1. Dubbo 调试
  • 帮助中心
  • 更新日志
  • 入门
    • 产品介绍
    • 联系我们
    • 私有化部署
  • 开始使用
    • 下载 Apifox
    • 注册与登录
    • 页面布局
    • 基本概念
    • 快速上手
      • 概述
      • 新建接口
      • 发送接口请求
      • 快捷请求
      • 添加断言
      • 新建测试场景
      • 分享 API 文档
      • 了解更多
    • 基础知识
      • 接口基本信息
        • 请求 URL 与方法
        • 请求参数与请求体
        • 请求头
        • 请求参数编码解码
        • HTTP/2
      • 认证与授权
        • 概述
        • 支持的授权类型
        • Digest Auth
        • OAuth 1.0
        • OAuth 2.0
        • Hawk Authentication
        • Kerberos
        • NTLM
        • Akamai EdgeGrid
        • CA 和客户端证书
      • 响应与 Cookie
        • 概述
        • API 响应
        • 创建和发送 Cookie
        • 实际请求
        • 提取响应示例
      • 请求代理
        • 网页端中的请求代理
        • 分享文档中的请求代理
        • 客户端中的请求代理
      • API Hub
        • API Hub
    • 导入导出数据
      • 概述
      • 手动导入
      • 定时导入
      • 导入设置
      • 导出数据
      • 其它方式导入
        • 导入 OpenAPI/Swagger
        • 导入 Postman
        • 导入 Apipost
        • 导入 Eolink
        • 导入 cURL
        • 导入 Markdown
        • 导入 Insomnia
        • 导入 apiDoc
        • 导入 .har 文件
        • 导入 knife4j
        • 导入 NEI
        • 导入小幺鸡(docway)
        • 导入 Apizza
        • 导入 WSDL
  • 设计 API
    • 概述
    • 新建 API 项目
    • 接口基础知识
    • 请求体多示例配置
    • 响应组件
    • 常用字段
    • 全局参数
    • 历史记录
    • 批量管理
    • 数据模型
      • 概述
      • 新建数据模型
      • 通过 JSON 等生成
      • 高级数据类型
      • 构建数据模型
    • 鉴权组件
      • 概述
      • 创建鉴权组件
      • 使用鉴权组件
      • 在线文档中的鉴权组件
    • 高级功能
      • 接口字段
      • 接口状态
      • 关联测试场景
      • 参数列表外观
      • 接口唯一标识
  • 开发和调试 API
    • 概述
    • 生成请求
    • 发送请求
    • 请求历史
    • 接口用例
    • 动态值
    • 校验响应
    • 文档模式/调试模式
    • 生成代码
    • 环境和变量
      • 概述
      • 全局/环境/临时变量
      • 环境与服务
      • Vault Secrets(密钥库)
        • 功能简介
    • 前后置操作&脚本
      • 概述
      • 断言
      • 提取变量
      • 等待时间
      • 数据库操作
        • 概述
        • MongoDB
        • Redis
        • Oracle
      • 使用脚本
        • 概述
        • 前置脚本
        • 后置脚本
        • 公共脚本
        • pm 脚本 API
        • 使用 JS 类库
        • 响应数据可视化
        • 调用外部程序
      • 脚本示例
        • 断言示例
        • 脚本使用变量
        • 脚本读取/修改接口请求信息
      • 常见问题
        • 如何获取动态参数的真实值并加密?
        • 脚本运行后,提取的数字(bigint)精度丢失应该如何处理?
    • API 调试
      • GraphQL 调试
      • WebSocket 调试
      • Socket.IO 调试
      • SSE 调试
      • SOAP/WebService
      • gRPC 调试
      • 使用请求代理调试
      • Dubbo 调试
        • 新建 Dubbo 接口
        • 调试 Dubbo 接口
        • Dubbo 接口文档
      • TCP(Socket)
        • Socket 接口功能简介
        • 报文数据处理器
  • Mock 数据
    • 概述
    • 智能 Mock
    • 自定义 Mock
    • Mock 优先级
    • Mock 脚本
    • 云端 Mock
    • 自托管 Runner Mock
  • 自动化测试
    • 概述
    • 编排测试场景
      • 新建测试场景
      • 测试步骤间传递数据
      • 测试流程控制条件
      • 从接口/用例同步数据
      • 跨项目导入接口/用例
      • 导出测试场景数据
    • 运行测试场景
      • 运行测试场景
      • 批量运行测试场景
      • 数据驱动测试
      • 定时任务
      • 管理其它项目接口的运行环境
    • 测试报告
      • 测试报告
    • API 测试
      • 集成测试
      • 性能测试
      • 端到端测试
      • 回归测试
    • Apifox CLI
      • 概述
      • 安装和运行 CLI
      • CLI 命令选项
    • CI/CD
      • 概述
      • 与 Jenkins 集成
      • 与 Gitlab 集成
      • 与 Github Actions 集成
      • 与其它更多 CI/CD 平台集成
  • 发布 API 文档
    • 概述
    • 快捷分享
    • 查看 API 文档
    • 发布文档站
    • 页面布局设置
    • 自定义域名
    • AI 相关特性
    • 高级设置
      • 文档站搜索设置
      • 跨域代理
      • 文档站接入 Google Analytics
      • SEO 设置
      • 文档左侧目录设置
      • 文档可见性设置
      • 在线 URL 链接规范
    • API 版本
      • 创建 API 版本
      • 发布 API 版本
      • 快捷分享 API 版本
      • 功能简介
  • 迭代分支
    • 功能简介
    • 新建迭代分支
    • 在迭代分支中改动 API
    • 在迭代分支中测试 API
    • 合并迭代分支
    • 管理迭代分支
  • 管理中心
    • 入驻清单
      • 了解基本概念
      • 团队入驻
    • 管理团队
      • 团队基本操作
      • 团队成员管理
      • 成员角色与权限设置
      • 团队资源
        • 通用 Runner
        • 请求代理 Agent
        • 团队变量
      • 实时协作
        • 团队协作
    • 管理项目
      • 项目基本操作
      • 项目成员管理
      • 通知设置
        • 功能简介
        • 通知对象
        • 通知事件
      • 项目资源
        • 数据库连接
    • 管理组织
      • 单点登录(SSO)
        • 功能简介
        • 为组织配置单点登录
        • 管理用户账号
        • 将组映射到团队
        • Microsoft Entra ID
      • SCIM 用户管理
        • 功能简介
        • Microsoft Entra ID
      • 组织资源
        • 自托管 Runner
  • IDEA 插件
    • 快速上手
    • 生成接口文档
    • 生成数据模型
    • 配置
      • 全局配置
      • 项目内配置
      • 可配置规则
      • 脚本工具
      • Groovy 本地扩展
    • 进阶配置
      • 注释规范说明
      • 框架支持
    • 常见问题
      • 常见问题
  • 浏览器扩展
    • Chrome
    • Microsoft Edge
  • Apifox MCP Server
    • 概述
    • 通过 MCP 使用 Apifox 项目内的 API 文档
    • 通过 MCP 使用公开发布的 API 文档
    • 通过 MCP 使用 OpenAPI/Swagger文档
  • 最佳实践
    • 概述
    • 接口之间如何传递数据
    • 登录态(Auth)如何处理
    • 接口签名如何处理
    • 如何加密/解密接口数据
    • Jenkins 定时触发任务
    • 如何计算 AI 问答成本
    • 与其他成员共用数据库连接配置
    • 通过 CLI 运行包含云端数据库连接配置的测试场景
    • 通过 Runner 运行包含云端数据库连接配置的测试场景
  • 账号&应用设置
    • 账号设置
    • 语言设置
    • 网络代理
    • 快捷键
    • 数据备份与恢复
    • 更新 Apifox
    • API 访问令牌
  • 身份验证 & Auth 鉴权指南
    • 什么是 API Key
    • 什么是 Bearer Token
    • 什么是 JWT
    • 什么是 Basic Auth
    • 什么是 Digest Auth
    • 什么是 OAuth 1.0
    • 什么是 OAuth 2.0
      • 什么是 OAuth 2.0
      • 授权码授权类型
      • 授权码授权类型,带有 PKCE
      • 隐式授权类型
      • 密码凭证授权类型
      • 客户端凭证授权类型
  • 服务与隐私协议
    • 服务协议
    • 隐私协议
    • 服务等级协议
  • 参考资料
    • API 设计优先理念
    • JSON Schema 介绍
    • JSONPath 介绍
    • XPath 介绍
    • Apifox Markdown 语法
    • CSV 格式规范
    • 正则表达式
    • 安装 Java 环境
    • Runner 运行环境
    • 常见编程语言对应的数据类型
    • Socket 粘包和分包问题
    • 词汇表
    • 目录链接汇总
    • Apifox Swagger 扩展
      • 概述
      • x-apifox-folder
      • x-apifox-status
      • x-apifox-name
      • x-apifox-maintainer
    • Apifox JSON Schema 扩展
      • 概述
      • x-apifox-mock
      • x-apifox-orders
      • x-apifox-enum
    • 动态值表达式
  • 常见问题
  1. Dubbo 调试

调试 Dubbo 接口

定义目标服务器地址#

开始调试接口前需定义目标服务器地址,你可以通过直连服务器或通过注册中心两种方式进行调试。

直连#

点击页面右上角的环境配置按钮。
image.png
填写服务器地址,然后点击“保存”按钮。
image.png
在右上角指定刚刚配置的服务器地址,项目内的其它 Dubbo 接口也将会默认采用该地址。
image.png
如果需要单独为每个 Dubbo 接口设置不同的服务器地址,可以点击接口地址栏,选择环境并手动切换服务器地址。
image.png
确认服务地址无误后,点击右上角的“调用”按钮。

注册中心#

Apifox 目前支持的注册中心为: ZooKeeper、Nacos 和阿里云 EDAS。
点击页面右上角的环境配置按钮。
image.png
填写注册中心名称,选择类型并填写地址。若注册中心配置了鉴权机制,请点击右侧齿轮按钮并进行高级配置。
image.png
在右上角指定刚刚配置的注册中心,项目内的其它 Dubbo 接口也将会默认采用该注册中心地址。
image.png
如果需要单独为每个 Dubbo 接口设置不同的注册中心,可以点击接口地址栏,选择环境并手动切换注册中心。
image.png
确认服务地址无误后,点击右上角的“调用”按钮。

配置参数#

版本号和分组#

若 Dubbo 接口配置了版本号和分组,则需要填写,否则请留空。
image.png

类名#

在接口中需要配置参数的 Java 类名。
如果是简单类型,比如 string、java.lang.String,那么可以不填写类名。Apifox 会自动推断类名。
如果是 List 类型,请选择 java.util.List。其它集合类型同理,即选择完整名称。
image.png
如果是自定义 DTO 类型,请填写完整的 DTO 名称,即包含完整 Package 名称。比如要引用 com.dubbo.example Package 内名为 User 的 DTO,那么需要完整填写 com.dubbo.example.User。
image.png

消息#

消息体格式支持 JSON 格式。在消息体中还可以使用变量,变量的格式为 {{变量名}},并且还支持添加“动态值”。
image.png
你也可以使用系统内置的「自动生成」功能生成请求消息体。使用该功能需提前在接口定义中添加请求参数,系统将根据请求定义自动生成请求体,详细说明请参考《接口文档 —— 请求定义》。
image.png

复杂参数#

一般情况下,Apifox 会自动推断字段的类型。但是,可能无法正确推断复杂参数的类型,导致服务端收到消息后序列化失败。这种情况下,需要手动声明字段的 Java 类型。语法为:
{
    "$class": "字段的 Java 类名",
    "$": "字段的值"
}
请求参数是 DTO,DTO 内部存在复杂类型
假设某一个 DTO 类型内部通过 List 或其他数据结构引用了其它 DTO 类型,调用接口返回了 java.util.HashMap cannot be cast to xxx.xxx.Dto 形式的报错,这表示 Apifox 将 DTO 的类型自动推断为 java.util.HashMap。而服务器定义的是一个具体的自定义类名,两者不匹配,此时需要在调用时指定字段的类名。 假设 DTO 为:
Dubbo 接口为:
那么使用 Apifox 调用 sayHello 方法时,需要手动指定 addresses 字段内元素的类名为 com.dubbo.example.Address,以避免其类型被自动推断为 java.util.HashMap:
{
    "name": "Tom",
    "age": 3,
    "addresses": [
        {
            "$class": "com.dubbo.example.Address",
            "$": {
                "province": "Guangdong",
                "city": "Guangzhou"
            }
        },
        {
            "$class": "com.dubbo.example.Address",
            "$": {
                "province": "Guangdong",
                "city": "Shenzhen"
            }
        }
    ]
}
即:
image.png
请求参数是数组,数组元素是 DTO
假设 DTO 为:
Dubbo 接口为:
那么使用 Apifox 调用 sayHello 方法时,需要先选择 java.util.ArrayList 这个 Java 类名,然后在消息体内手动指定数组元素的类名为 com.dubbo.example.Address:
[
    {
        "$class": "com.dubbo.example.Address",
        "$": {
            "province": "Guangdong",
            "city": "Guangzhou"
        }
    },
    {
        "$class": "com.dubbo.example.Address",
        "$": {
            "province": "Guangdong",
            "city": "Shenzhen"
        }
    }
]
即:
image.png

多参数#

若接口存在多个入参,那么可以点击左侧的“添加参数”按钮,添加多个参数。
image.png

映射关系#

Java 和 JSON 的数据类型存在着映射关系,如下表所示:
JavaJSONJSON 示例
boolean, java.lang.Booleanbooleantrue, false
char, java.lang.Characterstring"\u0066", "f"
java.lang.Stringstring"Hello World!"
byte, java.lang.Byte, short, java.lang.Short, int, java.lang.Integer, long, java.lang.Longinteger1, -10, 0
float, java.lang.Float, double, java.lang.Doublefloat1.1, -10.0, 0
java.math.BigDecimalobject{"value": 1.1}
java.util.List<V\>, java.util.Set<V\>, dataType[]array[v, …]
java.util.Map<K,V>, DTO, POJOobject{"k": v, …}
enumobject{"name": "ENUM_VALUE"}
java.util.Date, java.sql.Date, java.sql.Timestamp, java.sql.Timestring"2020-01-01 00:00:00"
java.time.LocalDateTime, java.time.LocalTimestring"2020-01-01T00:00:00"
java.time.LocalDatestring"2020-01-01"

调用接口#

点击右上角的「调用」按钮,即可得到接口的返回结果。
image.png

校验响应#

如果 Dubbo 接口具备有效的响应定义,那么在调用接口后,Apifox 会自动对响应进行校验,与 HTTP 接口的调试体验保持一致。
image.png

前后置操作#

Apifox 商业专业版可使用 Dubbo 的前后置操作功能
Dubbo 接口支持在调试接口时执行前后置,包括断言、提取变量、数据库操作、自定义脚本、公共脚本、等待时间,与 HTTP 接口的调试体验保持一致,具体可以参考 HTTP 的前后置操作帮助文档。
image.png
由于 Dubbo 接口与 HTTP 接口的一些基本概念存在不同,因此使用自定义脚本时,一些方法存在差异,而大部分方法与 HTTP 相同。需要注意的是以下方法:

pm.request#

pm.request.attachments:对 RpcContext 的 Attachment 进行操作,语法与 pm.request.headers 相同
pm.request.params:对请求参数进行操作,拥有 2 个方法
get(index):获取请求参数
set(index, object):设置请求参数

pm.response#

pm.response.json():将响应转换为 JavaScript 对象
pm.response.text():将响应转换为纯文本

常见问题#

传递 Long 类型的数字时,为什么服务端所收到的数字后面几位是错误的?
请使用 JSON 字符串传递 Long 类型的数字,即把数字使用双引号包裹起来,但是类名依旧保持 java.lang.Long。数字后面出现错误的原因是较大的数字超出了 JSON 的整数范围。
当 JSON 对象内部的字段是日期、对象或其他非简单类型时,为什么服务端会出现序列化错误?
请求参数中包含数组时,为什么会出现 `java.lang.String cannot be cast to XXX` 报错?
修改于 2025-02-05 09:55:01
上一页
新建 Dubbo 接口
下一页
Dubbo 接口文档
Built with