我在Grails中实现RESTful API,并使用自定义身份验证方案,该方案涉及签署请求正文(以类似于Amazon的S3身份验证方案的方式).因此,要验证请求,我需要访问原始POST或PUT正文内容来计算和验证数字签名.
我正在控制器中的beforeInterceptor中进行身份验证.所以我希望在拦截器中可以访问像request.body这样的东西,并且仍然能够在实际操作中使用request.JSON.我担心如果我使用getInputStream或getReader(ServletRequest提供的方法)在拦截器中读取正文,当我尝试通过request.JSON访问它时,正文将在操作中显示为空.
我正在从Django迁移到Grails,一年前我在Django中遇到了完全相同的问题,但它很快被修补了.Django提供了一个request.raw_post_data属性,您可以将其用于此目的.
最后,为了好看和RESTful,我希望这适用于POST和PUT请求.
任何建议或指示将不胜感激.如果它不存在,我更倾向于指出如何针对快速和肮脏的黑客实现优雅的解决方案.=)在Django中,我编辑了一些中间件请求处理程序,以便为请求添加一些属性.我是Groovy和Grails的新手,所以我不知道代码在哪里,但我不介意在必要时做同样的事情.