技术问题汇总:前端怎么往后端传一个数组?

场景

现在一个专门负责复习算法的服务,筛选出了用户今天需要复习的笔记的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了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值