自动引流免费appseo外包杭州
场景
现在一个专门负责复习算法的服务,筛选出了用户今天需要复习的笔记的ids,现在要调用笔记服务根据ids查询的接口。
请问复习服务怎么将ids发到笔记服务,笔记服务怎么接收。
思路
发的时候肯定是用字符串,接收的时候,用List接收到了就接收,接收不到就也用字符串,收到了再解析成数组。
参考代码
发送
// 提取需要复习的笔记 ID
List<Long> reviewNoteIds = reviewList.stream().map(NoteAttributeDTO::getNid).toList();
// 转换成逗号分隔的字符串
String idsStr = reviewNoteIds.stream().map(String::valueOf).collect(Collectors.joining(","));
feign:
// 根据ids查询笔记
@GetMapping("/api/note-service/note/findNotesByIds")
ResultData<List<NoteDTO>> findNotesByIds(@RequestParam("ids") String ids);
接收
用List直接接收
@GetMapping("/findNotesByIds")public ResultData<List<Note>> findNotesByIds(@RequestParam("ids") List<Long> ids) {if (ids == null || ids.isEmpty()) {return ResultData.failure(ResultCodeEnum.FAIL, "笔记 ID 不能为空");}List<Note> notes = noteService.findNotesByIds(ids);return ResultData.success(notes);}
先接收成字符串,再解析
// 次接口仅用来测试前端怎么给后端传递一个数组@GetMapping("/arrayTest")public ResultData<List<Long>> arrayTest(@RequestParam("ids") String ids) {// 逗号分隔解析List<Long> idList = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList());System.out.println(idList);return ResultData.success(idList);}
总结
远程调用要传数组,传的一方肯定用字符串。收的一方看能用List接收到,就用List,不能用List就也用字符串接收。
额,别的方法还没试过,可能还有更简单的方法,不过我感觉这种暂时够用了,顶多传的时候,再粘几行代码就ok了。