使用 “统一的渲染控制” 可以对输出做统一的控制外。。。还可以借助路由拦截器 RouterInterceptor ,对 mvc 返回结果做提交确认机制(即可修改)进行控制(相对来讲,这个可能更简单)。。。关于全局的请求异常处理,最好不要放在这里。。。放到过滤器(因为它是最外层的,还可以捕捉 mvc 之外的异常)

这个文,也相当是对 RouterInterceptor 应用的场景演示(只是示例,具体根据自己的情况处理):

1、案例1:为返回结果统一加上外套

@Component
public class GlobalResultInterceptor implements RouterInterceptor { @Override
public void doIntercept(Context ctx, Handler mainHandler, RouterInterceptorChain chain) throws Throwable {
//提示:这里和 doFilter 差不多...
chain.doIntercept(ctx, mainHandler);
} /**
* 提交结果( render 执行前调用)//不要做太复杂的事情
*/
@Override
public Object postResult(Context ctx, Object result) throws Throwable {
if(result instanceof Throwable){
//异常类型,根据需要处理
return result;
}else{
//例:{"name":"noear"} 变成 {"code":200,"description":"","data":{"name":"noear"}}
return Result.succeed(result);
}
}
}

2、案例2:使用翻译框架对 mvc 返回结果做处理

@Component
public class GlobalTransInterceptor implements RouterInterceptor {
@Inject
private TransService transService; @Override
public void doIntercept(Context ctx, Handler mainHandler, RouterInterceptorChain chain) throws Throwable {
//提示:这里和 doFilter 差不多...
chain.doIntercept(ctx, mainHandler);
} /**
* 提交结果( render 执行前调用)//不要做太复杂的事情
*/
@Override
public Object postResult(Context ctx, Object result) throws Throwable {
//提示:此处只适合做结果类型转换
if (result != null && !(result instanceof Throwable) && ctx.action() != null) {
result = transService.transOneLoop(result, true);
} return result;
}
}

Solon 统一的返回结果调整的更多相关文章

  1. springboot实现定时任务,异步操作,统一结果返回,全局异常处理,拦截器及事务处理

    本文是作者原创,版权归作者所有.若要转载,请注明出处. 本文都是springboot的常用和实用功能,话不多说开始吧 定时任务 1.启动类开启注解 @EnableScheduling //开启基于注解 ...

  2. 使用 ResponseBodyAdvice 拦截Controller方法默认返回参数,统一处理返回值/响应体

    使用 @ControllerAdvice & ResponseBodyAdvice 拦截Controller方法默认返回参数,统一处理返回值/响应体 1.Controller代码 以下是Con ...

  3. Java接口统一样式返回模板

    Java接口统一样式返回模板 背景 在进行接口开发时,一般需要一个固定的返回样式,成功和失败的时候,都按照这种格式来进行统一的返回,这样,在与其他人进行接口之间的联调时不会显得很杂乱无章.而这种固定的 ...

  4. Java生鲜电商平台-统一格式返回的API架构设计与实战

    Java生鲜电商平台-统一格式返回的API架构设计与实战 说明:随着互联网各岗位精细化分工的普及,出现了很多的系统架构设计,比如常见的前后端分离架构,后端提供接口给前端,前端根据接口的数据进行渲染,大 ...

  5. ASP.NET Core搭建多层网站架构【11-WebApi统一处理返回值、异常】

    2020/02/01, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[11-WebApi统一处理返回值.异常] 使用I ...

  6. SpringBoot系列(十)优雅的处理统一异常处理与统一结果返回

    SpringBoot系列(十)统一异常处理与统一结果返回 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列 ...

  7. 如何设计 API 接口,实现统一格式返回?

    文章目录: 目录 前后端接口交互 接口返回值约定 返回值规范 正确返回 错误返回 统一定义错误码 错误码规范 Controller 层如何用? 正确返回 错误返回 详细代码实现 错误码 Control ...

  8. SpringBoot统一处理返回结果和异常情况

    如果文章有帮助到你,还请点个赞或留下评论 原因 在springboot项目里我们希望接口返回的数据包含至少三个属性: code:请求接口的返回码,成功或者异常等返回编码,例如定义请求成功. messa ...

  9. SpringBoot 如何统一后端返回格式?老鸟们都是这样玩的!

    大家好,我是飘渺. 今天我们来聊一聊在基于SpringBoot前后端分离开发模式下,如何友好的返回统一的标准格式以及如何优雅的处理全局异常. 首先我们来看看为什么要返回统一的标准格式? 为什么要对Sp ...

  10. .NetCore Web Api 利用ActionFilterAttribute统一接口返回值格式

    .Net Core 同 Asp.Net MVC一样有几种过滤器,这里不再赘述每个过滤器的执行顺序与作用. 在实际项目开发过程中,统一API返回值格式对前端或第三方调用将是非常必要的,在.NetCore ...

随机推荐

  1. js对象深拷贝方法

    JSON.stringify()是目前前端开发过程中最常用的深拷贝方式, 原理是把有个对象序列化成为一个 JSON 字符串,将对象的内容转换成字符串的形式再保存到磁盘上, 再用 JSON.parse( ...

  2. JWT用户认证体系

    依赖 <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifa ...

  3. Linux & 标准C语言学习 <DAY8_1>

    一.进制转换     1.为什么要使用二进制.八进制.十六进制         因为目前的CPU只能识别高低两种电平,只能对二进制数据进行计算         二进制虽然能够直接被计算机识别,但是不方 ...

  4. 依图在实时音视频中语音处理的挑战丨RTC Dev Meetup

    前言 「语音处理」是实时互动领域中非常重要的一个场景,在声网发起的「RTC Dev Meetup丨语音处理在实时互动领域的技术实践和应用」 活动中,来自百度.寰宇科技和依图的技术专家,围绕该话题进行了 ...

  5. Hugging News #0317: ChatGLM 会成为 HF 趋势榜的第一名吗?

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  6. Maven 自动化构建

    一.Maven:是一款服务于 Java平台的自动化构建工具 [1]Maven可以将一个项目按模块划分成不同的工程,利于分工协作;[2]Maven可以将 jar包保存在自己的中央"仓库&quo ...

  7. Java面试——搜索

    更多内容,前往 IT-BLOG 一.Elasticsearch了解多少 ElasticSearch 是一个基于 Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTfu ...

  8. spark中的持久化机制以及lineage和checkpoint(简含源码解析)

    spark相比MapReduce最大的优势是,spark是基于内存的计算模型,有的spark应用比较复杂,如果中间出错了,那么只能根据lineage从头开始计算,所以为了避免这种情况,spark提供了 ...

  9. Go 语言:通过TDD测试驱动开发学习 Mocking (模拟)的思想

    正文: 现在需要你写一个程序,从 3 开始依次向下,当到 0 时打印 「GO!」 并退出,要求每次打印从新的一行开始且打印间隔一秒的停顿. 3   2   1   Go!   我们将通过编写一个 Co ...

  10. Lodash中常用函数,不建议经常使用,容易让人变懒忘了原生函数

    1.N次循环 <script type="text/javascript"> console.log('------- javascript -------'); // ...