RespBodyVo
Introduction
为了方便开发者返回数据,tio-boot 内置了了统一的数据返回类 RespBodyVo RespBodyVo
是一个用于构造和管理响应对象的工具类,它提供了一种标准化的方式来表示操作的结果(成功、失败或未知)、消息、数据和业务编码。这个类非常适合在后端服务中使用,尤其是在需要对前端返回标准化的响应结构时。
RespBodyVo 使用示例
import com.litongjava.annotation.RequestPath;
import com.litongjava.tio.utils.resp.RespBodyVo;
@RequestPath("/resp-vo")
public class RespVoController {
public RespBodyVo success() {
return RespBodyVo.ok("success");
}
public RespBodyVo fail() {
return RespBodyVo.fail("fail");
}
}
成功响应
- 方法:
success()
- 类型: GET
- 路径:
/resp-vo/success
- 返回数据示例:
{
"data": "success",
"code": 1,
"ok": true,
"msg": null
}
说明:
data
字段表示业务数据,此处为字符串 "success"。code
字段为业务编码,1
表示操作成功。ok
字段表明响应状态,true
表示成功。msg
字段通常用于传递额外信息,此处为null
因为操作成功不需要额外消息。
失败响应
- 方法:
fail()
- 类型: GET
- 路径:
/resp-vo/fail
- 返回数据示例:
{
"data": null,
"code": 0,
"ok": false,
"msg": "fail"
}
说明:
data
字段在失败响应中通常为空,因为没有业务数据要返回。code
字段为业务编码,0
表示操作失败。ok
字段表明响应状态,false
表示失败。msg
字段用于提供失败的具体原因,此处为字符串 "fail"。
RespBodyVo 使用文档
成功响应
要创建一个表示成功的响应,可以使用 RespBodyVo.ok()
方法。这个方法可以被重载,以便于传递与操作成功相关的数据。
- 无数据成功响应:
RespBodyVo response = RespBodyVo.ok();
- 带数据的成功响应:
RespBodyVo response = RespBodyVo.ok(someData);
在这里,someData
可以是任何类型的对象,表示与操作成功相关的业务数据。
失败响应
要创建一个表示失败的响应,可以使用 RespBodyVo.fail()
方法。这个方法也可以被重载,以便于传递表示失败原因的消息。
- 无消息的失败响应:
RespBodyVo response = RespBodyVo.fail();
- 带消息的失败响应:
RespBodyVo response = RespBodyVo.fail("失败的原因");
设置额外属性
除了基本的成功或失败状态,RespBodyVo
还允许你设置额外的属性,如消息(msg
)、业务编码(code
)和业务数据(data
)。
- 设置消息:
response.msg("操作成功的附加信息");
- 设置业务编码:
response.code(1001); // 1001 为示例业务编码
- 设置业务数据:
response.data(someData);
响应格式
使用 RespBodyVo
构造的响应对象通常包含以下几个字段:
code
:业务编码,用于表示操作的具体结果。ok
:布尔值,表示操作是成功(true
)还是失败(false
)。msg
:字符串,用于提供关于操作结果的额外信息或失败原因。data
:对象,携带与操作成功相关的业务数据。
示例
以下是一个完整的示例,展示了如何使用 RespBodyVo
来构造一个带有成功消息、业务编码和业务数据的成功响应:
public RespBodyVo createSuccessResponse() {
Object someData = ...; // 从业务逻辑获取数据
return RespBodyVo.ok(someData)
.msg("操作成功完成")
.code(200); // 使用自定义的成功业务编码
}
相应地,下面是一个失败响应的示例:
public RespBodyVo createFailResponse() {
return RespBodyVo.fail("无法完成操作,因为...")
.code(400); // 使用自定义的失败业务编码
}