移动应用开发 - 新手设计Java API的困惑,一些疑问点望解答?
巴扎黑
巴扎黑 2017-04-18 09:22:08
[Java讨论组]
巴扎黑
巴扎黑

全部回复(4)
PHP中文网

首先回答一下第一个第二个,如果你参照的风格是restful的话,那么你这套接口应该是通用的,json只是一个字符串,因此,采用什么风格就看你们约定好的,通常我们都是用下划线,另外你说的统一化这个也是根据需求设定的,根据需要设置字段,但是通常code msg status这种在每一个api都应该要有,data字段应该是一个json对象,里边的对象属性就要根据你的接口作用设置了,这就是区别化(个人风格,仅代表个人观点),第三个问题为了通用化,你可以把时间戳弄成long类型的,根据客户端的语言再转化成yyyyMMdd这种,建议不要先转再发。第四个问题,token是为了安全而设定的,那么你可以采用客户端先请求token,每一次都不一样,然后在后端弄成一个映射,当客户端请求api的时候携带token,根据token直接映射到对应的用户。

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

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

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

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

PHP中文网

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


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

objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
黄舟

1.必须统一,要是每个接口都不一样,客户端写代码要疯了,到时候调试你们都要疯了
大部分通用的规则是
{code:'',msg:'',data:{}}
code:当前状态码,这个后台配置不同响应不同状态码
msg:正常返回或者发生异常返回的提示信息
data:data可以是对象或者数组,返回数据
2.java的话一般驼峰
3.时间这个要看每个界面不同,你不可能所有界面返回的时间都一种格式吧,这个没必要弄的那么一样吧我觉得
4.token放head body都行,业务够大了可以放内存,redis memcached什么的 nosql的都行,量小就查库,没必要那么复杂了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号