为了账号安全,请及时绑定邮箱和手机立即绑定

新手设计Java API的困惑,一些疑问点望解答?

新手设计Java API的困惑,一些疑问点望解答?

回首忆惘然 2019-03-14 18:15:36
本人第一次设计供给移动端的API,中间遇到些困惑,想咨询下各位有经验的前辈,目前服务端使用的是Java:1.返回的参数对所有接口都统一化还是各个接口区分对待?我理解的统一化:{message:"XXX", code:"XXX", data:"不同接口的数据集"}我理解的区分化:{message:"XXX", code:"XXX", users:"用户结果数据集"}、{message:"XXX", code:"XXX", reposities:"资源库数据集"}2.看了github的API接口,较长的参数一般使用下划线拼接,如:following_url,html_url字段。现在服务端是Java语言,Java语言对参数的命名都是驼峰风格,那么我返回的参数是按照驼峰设计呢还是类似于github的方式?3.以前是做Java支付交易系统的,时间都是YYYYMMDD、HHMMSS格式的,现在在做社交类型的系统,朋友推荐说使用时间戳或者格式化好的YYYYMMDD类型,所以请教下大家对返回的时间戳一般是怎么设计的?4.Token一般是放在后台在Head里面返回客户端,客户端在请求时也是在放在Head里面吧?对于Token的设计,我想的是保存在数据库里面,每次请求时通过查询数据库校验是否正常,但这样每次都查询数据库是很慢的,有没有把token放在缓存里面(memcached或者redis)的做法?
查看完整描述

5 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

  1. 我觉得区分开来比较好。前端都用js解析json字符串,解析完之后,不存在的属性就是undefined,前端用户可以判断是否为undefined进行区分处理。我见过的一些接口就是成功的时候没有error属性,只在失败的时候才有。这样可以节省一些字节传输。

  2. 命名我觉得比较随便了,你跟前端同学沟通一下就行。只要保证统一即可,不要一会儿是下划线一会又是驼峰

  3. 同意楼上意见,返回一个long类型的unix时间即可。这样你获取方便,下游的同学也方便转换。要不然还得一直记着你的字符串格式。一旦出现其他同学接手就可能出现混乱。

  4. token可以放到内存里,这种用法比较多。定一个过期时间,一旦过期从内存消除即可。当请求较多,实时性要求较高而内存也充裕的时候建议这样。


查看完整回答
反对 回复 2019-04-20
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

1、统一,减少与前端的沟通成本,也方便前端统一处理;
2、可以驼峰,也可以下划线,只要内部统一一种风格就好了,记忆中Jackson序列化时有个设置可以让驼峰格式转换成下划线格式的(反序列化时同理);
3、用时间戳,由前端格式化时间显示,方便同一接口在不同地方调用时可以显示不同的时间格式;
4、Token一般有时效性,没有必要放到数据库里,一般用MemcachedRedis存储并设置过期时间。


更新:
Jackson的驼峰转下划线配置:

objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);

查看完整回答
反对 回复 2019-04-20
  • 5 回答
  • 0 关注
  • 546 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信