关于微服务Feign调用的一点思考
1 网络传输入参类型选型
最好用String作为传参类型,因为这样的话,数据不会丢失(接受参数类似)
在微服务调用中,如果请求的服务类型为对象,我们可能需要使用@SpringQueryMap这样的注解来实现类型于@ResponseBody来接受一个对象类型的参数。
现在,我们把对象/集合/数组类型的转为String类型,在网络传输中它的数据不会丢失,而且性能应该不错
服务端:
@RequestMapping("getAll")
public Result selectAllt(String startProvinceIds,
String endProvinceIds,
String imgJson,
String reportAddressJson
);
调用端:
JSONObject imgJSon =JSONObject.parseObject(“imgJSon”)
imgJSon.getXXX(“key”)
在这里,推荐大家配合使用Alibaba的fastJson
自己常用的API:
1 JsonObject
本质上是个Map<String, Object>,封装了一系列API供我们使用。
例如:parseXXX:相关的API可以把String类型的参数转换为指定Java类型的对象,非常方便
2 JSONArray
本质是个List 泛型为Object,可以把前端传递的数组类型的字符串转换为指定泛型的List集合。