# 首次使用

以REST响应服务为例,我们体验下MornBoot如何用最简易的配置,完成业务功能吧。

# 注解配置

在普通的RestController上标注@RestResponse注解。


@RestResponse
@RestController
@RequestMapping("rest")
public class TestRestController {

  /**
   * 返空值
   */
  @GetMapping("null")
  public void returnNull() {
  }

  /**
   * 抛异常
   */
  @GetMapping("ex")
  public void returnException() {
    throw new RuntimeException("This is exception.");
  }
}

# 访问接口

使用curl命令或其它方式访问接口。

curl http://localhost:8080/rest/null

我们发现,接口返回了相当完整的JSON格式消息。

{
  "status": 200,
  "code": "success",
  "level": "info",
  "message": "Successful operation.",
  "data": null
}

同样,抛出异常的接口将返回异常信息。

{
  "status": 500,
  "code": "failure",
  "level": "error",
  "message": "This is exception.",
  "data": null
}

# 格式转换

大多数时候业务项目不是从零开始,业务框架中通常定义了自己的响应消息格式,MornBoot也支持返回自定义格式的业务消息。

我们现在就尝试返回一个自定义消息,首先编写一个响应主体 BaiduMessage 类。

点击查看代码
/**
 * 百度REST消息
 */
@Getter
@Setter
@ToString
public class BaiduMessage {

  /**
   * 状态码
   */
  private String error;

  /**
   * 消息内容
   */
  private String msg;

  /**
   * 消息数据
   */
  private Object data;
}

@RestResponse 上声明响应类型为 BaiduMessage.class


@RestResponse(BaiduMessage.class)
@RestController
@RequestMapping("rest")
public class TestRestController {

  /**
   * 返回用户数据 - 百度格式
   */
  @GetMapping("baidu/ex")
  public void returnBaiduData() {
    throw new RuntimeException("This is Baidu exception.");
  }
}

最后,还需要实现一个转换器,以便将MornBoot内置的RestMessage转换为BaiduMessage。

点击查看代码
/**
 * 百度消息转换器
 */
@Component
@Source(RestMessage.class)
@Target(BaiduMessage.class)
public class BaiduMessageConverter implements RestMessageConverter<BaiduMessage> {

  @Override
  public BaiduMessage convert(RestMessage restMessage) {
    BaiduMessage baiduMessage = new BaiduMessage();
    baiduMessage.setError(RestMessageConstants.isSuccess(restMessage.getStatus()) ? "0" : "-1");
    baiduMessage.setMsg(restMessage.getMessage());
    baiduMessage.setData(restMessage.getData());
    return baiduMessage;
  }
}

我们发现接口已经返回了完全不同的JSON消息。

{
  "error": "-1",
  "msg": "This is Baidu exception.",
  "data": null
}

至此,MornBoot的第一个功能已经体验完成,有没有感受到你的业务框架更加灵活了呢?快去探索其它功能吧。

如果遇到困难,也请提交给我们。 GitHub issues (opens new window)