关于批量接口

Posted yanch01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于批量接口相关的知识,希望对你有一定的参考价值。

1. 用ids取数据的接口返回Map

使用

public Map<Integer, User> getUserByIds(Collection<Integer> ids) {
    ...
}

而不是

public List<User> getUserByIds(Collection<Integer> ids) {
    ...
}

原因是后者会引入一些困惑 :
1>id可以重复吗?重复时会去重吗?
2>返回的List的顺序和ids相关吗?
3>某个id不存在, List里是跳过还是null?

2.按ids取数据的RPC接口需要校验长度

接口实现时应该做ids最大长度校验. 若超出则直接抛异常, 否则可能会因性能上的问题拖垮整个服务.

import BoundExceededException;
Map<Integer, User> getUserbyIds(List<Integer> ids) throws BoundExceededException {
    if (ids.size() > bound) {
        throw new BoundExceededException();
    }
   ...
}



以上是关于关于批量接口的主要内容,如果未能解决你的问题,请参考以下文章

关于代码片段的时间复杂度

关于Postman+xmysql+nodeJs的实践分享

如何从选项卡片段中的 AsyncTask Resftful WS 加载批量数据

与另一个片段通信的片段接口

一个函数应该返回什么可以失败?

关于SQL数据库批量更新和增加的问题。