首页 > 解决方案 > 如何使用 grails 知道响应拦截器中有效负载的大小

问题描述

我正在为我的项目使用 grails spring boot。我也在使用拦截器和过滤器。目前,我有一个包含响应数据大小的测试用例。为此,在拦截器中,我集成了grails拦截器的after方法。在调试时,我没有找到任何方法来知道我从控制器发送的数据大小。例如

    class RestController {
         def show  {
            def data = [:]
            data.put("object", "some data objects " );

            withFormat {
                json {
                    render wrapper as JSON
                }
            }

        }
    }

// 拦截器。

    class RestInterceptor {

        RestInterceptor(){
            match(controller:"rest", action:"*")
        }

        boolean before() {
            println( request)
            true }

        boolean after() {
            println response
            true
        }

        void afterView() {
            // no-op
        }
    }

在响应对象中,它们不是任何知道内容长度的方法。但是,我可以在请求对象中看到相同的内容。请给建议。

标签: springgrailsinterceptor

解决方案


after方法在调用控制器操作之后和呈现视图之前执行。如果您想检查 中的某些model内容,您可以在after方法中执行此操作,但这并不能真正告诉您写入响应的大小。如果你想要后者,你可能想要使用afterView而不是after.


推荐阅读