Vertx 构建Rest服务实验手册(三)

在本系列的上一篇文章中, 给大家演示了如何构建一个简单的 Rest API。这次我们继续深入,为 Rest API 定义统一的输出格式。

返回数据格式设计

规范、统一额数据接口格式有利于服务端和客户端代码的重用,增强系统的可维护性。在实践中,对于 Restful 服务接口,通常建议采用如下的数据格式:

  1. 成功标志 (succ) - 定义本次调用在业务上是否成功,技术上是成功交由 HTTP 的返回值来决定。
  2. (错误)返回代码 (code) - 通常在出现业务错误时使用,返回错误代码。
  3. (错误)信息(msg) - 通常在出现业务错误时使用,返回经过本地化处理的错误消息,供客户端自己显示。
  4. 返回数据(data) - 正常调用时返回的数据,可以是简单的数据,也可以是复合的数据,比如 对象,数组等。

基于以上的设计,可在 Java 中的实现代码如下:

  1. 在项目中增加名为: cn.com.hohistar.study.vertx.dto 的包。

  2. 在包中新增名为: ApiResult 的类,该类用来统一(包装) API 的输出格式,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApiResult<T> {

private boolean succ;

private String code;

private String msg;

private T data;

}

修改 Rest API

打开在 上一篇文章 中构建的 ApiVerticle 类,将以下代码:

1
2
3
4
5
6
router.route("/api/todo").handler(ctx -> {

Todo todo = new Todo(1, "call tom", "description");
ctx.response().end(todo.toString());

});

修改为:

1
2
3
4
5
6
7
8
9
10
11
router.route("/api/todo").handler(ctx -> {

ApiResult<Todo> res = new ApiResult<>();
res.setSucc(true);

Todo todo = new Todo(1, "call tom", "description");

res.setData(todo);

ctx.response().end(JsonObject.mapFrom(res).toString());
});

可以看到,我们用新的 ApiResult 类包装了结果。

下一步

下一篇文章中,将介绍如何如何访问关系数据库。

本文标题:Vertx 构建Rest服务实验手册(三)

文章作者:梅老师

发布时间:2020年08月27日 - 10:08

最后更新:2020年09月16日 - 08:09

原始链接:https://www.mls-tech.info/java/vertx-practice-manual-3/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。