Gravitee:如何改写响应状态码(将202替换为200)
解决响应状态码从202改写为200的问题
问题分析
你之前的Groovy策略未生效,核心原因是操作对象错误:result对象通常用于自定义错误返回或特定流程控制,并非直接修改后端返回的响应状态码。要改写实际返回给客户端的响应,需要直接操作response对象,且必须在**响应流(Response Flow)**中执行策略——只有在后端返回响应后,才能修改其状态码。
正确的Groovy策略代码
将以下代码放在响应流的策略节点中(确保在后端响应返回后、发送给客户端前执行):
if (response.status == 202) { // 直接修改响应状态码为200 response.status = 200 // 若需要统一响应体,可取消下面的注释(不需要则保留后端原响应体) // response.content = '{"message":"ok"}' // 确保Content-Type与响应体匹配 response.headers['Content-Type'] = 'application/json' }
关键注意事项
- 策略执行阶段:必须绑定到Response Flow,不能放在Request Flow中——Request Flow是在请求发往后端前执行,此时还未获取到后端的202响应。
- 避免冲突:检查是否有其他后续策略(如错误处理、响应转换策略)会覆盖状态码,确保此策略在所有可能修改响应的策略之前执行。
- 保留响应体:如果不需要修改后端返回的响应内容,只需删除
response.content这一行,仅修改状态码即可。
内容的提问来源于stack exchange,提问作者user3001150
相关产品推荐
相关产品推荐

