gpt4 book ai didi

grails - 在 "render as JSON"之后向响应添加自定义 header

转载 作者:行者123 更新时间:2023-12-05 01:08:38 26 4
gpt4 key购买 nike

我正在尝试使用 Grails 过滤器将自定义 HTTP header 添加到特定 Controller 集的响应中:

class ApiFilters {
def filters = {
xwingFilter(uri:'/api/**') {
after = {
response.setHeader('X-Wing', 'foo')
}
}
}
}

如果 Controller 呈现 View 或文本,则 header 会添加到响应中。
如果 Controller 使用“呈现为 JSON”,则不会添加 header 。看起来 JSON 转换器正在关闭输出流并立即发送。那正确吗?

我可以使用 Grails 拦截器,但我必须在多个 Controller 中复制它。
关于如何实现这一目标的任何想法?

最佳答案

您可以在过滤器而不是操作中进行从模型到 JSON 的转换:

Controller :

class myController {
def myAction() {
[aThing: 1, anotherThing: [a: 1, b: 2]]
}
}

筛选:
class ApiFilters {
def filters = {
xwingFilter(uri:'/api/**') {
after = { model ->
response.setHeader('X-Wing', 'foo')
render model as JSON
return false // prevent normal view from rendering
}
}
}
}

关于grails - 在 "render as JSON"之后向响应添加自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16920822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com