写 Spring Web 的各位估计都写过返回 JSON 的项目,一般的结构都是这样的
{
"status":200,
"msg":"正常"
"data":{
......
}
}
{
"status":201,
"msg":"非正常"
}
按理说 Controller 层不参与业务的处理,顶多校验一下合法性之类的,所以大多数状态码都是交给 Service 层来返回的,可是 Java 的方法只能返回一个结果,想要返回多个结果只能包装成一个对象。但是包装成这样总感觉不舒服,照理说不应该由 service 层包装。
public Package<User> getUser(){
User user = new User();
if(user.getAge!=10){
//返回非正常
return new Package(201,null);
}
//返回正常
return new Package(200,user);
}
我想到的还有一种方式就是用 Exception 来做,直接把状态码放到 Exception 中,非 200 状态的就让 Controller 层 catch 后处理,好处就语法上就会有强制性 catch,但是这样做就会出现遇到 如果有多个正常状态码,Controller 层无法处理的问题:
public User getUser() throws CustomException {
User user = new User();
if(user.getAge!=10){
//返回异常
throw new CustomException(201);
}
//返回正常
return user;
}
请教大家平常用什么方法比较优雅。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.