# 首次使用
以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的第一个功能已经体验完成,有没有感受到你的业务框架更加灵活了呢?快去探索其它功能吧。
如果遇到困难,也请提交给我们。 (opens new window)