Kong-06 在网关层修改response内容
2019-08-04 本文已影响1人
国服最坑开发
- 场景: 对于已经提供服务的接口,需要临时添加一个通用的返回信息.比如接口的url信息等.
- 对策: 这种需求属于业务无关的,而且是比较固定的参数,可以考虑放在网关(kong)层,进行处理.
- 关于: 此案例中, 我们为一个特定的
router
添加一个response transformer
插件, 可以在后端服务把结果返回到用户前,修改其BODY
,HEAD
参数. - 前提:请参考本站前文,完成一个基本的接口服务,并在konga上配置一个
Service
和Route
.
response-1.png- 本文使用的Java代码:
@RestController
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
@RequestMapping(value = "/v1/user/get", produces = "application/json")
public String hello(){
JSONObject obj = new JSONObject();
obj.put("msg","Hi, man");
return JSON.toJSONString(obj);
}
}
-
启用新插件之前的接口访问结果:
response-2.png
1. 配置插件
我们打开待配置的Route
画面,选择ADD PLUGIN
增加一个插件
插件类型为: Transformations
中的Response Transformer
, 意思就是用于响应结果的格式修改.
在本插件的设置画面,我们这里,参考下图, 在 add
栏中的json
和header
中,分别增加一些键值对, 注意
,每添加一组参数需要手动回车
, 参数才能生效.
提交后, 可以在插件列表页, 点击此插件上的 眼睛 图标,查看本次设定内容:
response-6.png .
2.验证效果
-
response-7.pngBODY
验证
首先,我们在浏览器里验证, 可以发现返回结果里已经出现了我们在网关里增加的参数信息了.
-
response-8.pngHEADER
验证
在命令行中, 使用curl -i xxx
(Mac环境) ,在返回的信息中可以看到, HEADER中也正常出现了我们添加的 头部信息.
到此, 我们展示了, 如何通过网关服务来动态修改我们的返回结果. 对于已经上线的服务修改需求, 会带来意想不到的便利.