关于 app 接口开发

2017-02-03 12:28:17 +08:00
 erming

这篇就当是备忘录或以后开发 app 接口的规范参考吧。

1.关于加密

在抓包一些 app 之后,发现很多 app 对数据加密比较请示尤其是初创公司。如果没做好加密可能导致用户信息泄漏。

加密方式: MD5 、 RC4 、 RSA ,根据我们业务场景选择。

2.关于 app 版本

我们 app 一般一周一更新,部分功能也可能是热更新。 android 和 ios 的差异性。 有时候也要做好渠道和版本相关统计,运营或推广可能会用到。

3.关于 json 规范 如:

{ "error": false, //false 表示接口没有错误 true 表示请求异常 "data": { //服务器与客户端交互的数据

  }, 
  "message": "" //提示消息 如:参数错误

}

4.请求方式 get:选则 get 一般是把一些验证信息放到 http 请求的 head 中的 post:post 可以发送大量数据, php 的 post_max_size 默认值一般是 8MB,这时候验证信息可以放到 post 数据里面 5.开发文档 文档是服务器开发与客户端开发人员接口交流的重要途径,可能用 word/excel,或自己开发在线的文档 如: xx

转自: http://www.guodev.cn/archives/172

4447 次点击
所在节点    PHP
30 条回复
airyland
2017-02-03 12:51:57 +08:00
md5 不是加密算法
Kilerd
2017-02-03 12:52:54 +08:00
MD5 , RC4 已经不安全
Sentur
2017-02-03 13:30:35 +08:00
我选择倒叙加密 #滑稽
CFO
2017-02-03 13:34:48 +08:00
get 请求是把信息放在 head 中的?谁告诉你的?
weiceshi
2017-02-03 13:45:08 +08:00
@CFO
楼主是说:把一些验证信息放到 http 请求的 head 中的
请注意是验证信息
head 里加形如 X-Access-Token: xxxxxxxxxxxxxxxxx 的加密信息无误
baiyi
2017-02-03 13:53:23 +08:00
"error": false

这一条不是多余吗

有错误返回错误,没错误不返不就好了
wuzhizhan
2017-02-03 14:34:30 +08:00
"error":false ,换成 retCode 之类的状态码更好些。
ragnaroks
2017-02-03 15:13:24 +08:00
@baiyi #6
可能是客户端有实体
void1900
2017-02-03 15:31:48 +08:00
https
baiyi
2017-02-03 15:52:14 +08:00
@ragnaroks 唔...没接触过客户端开发,刚搜索了下实体对象,应该也可以在判断 HTTP status codes 为失败的时再创建,也就是说,成功是还是可以省略的
erming
2017-02-03 17:26:43 +08:00
@baiyi 有时候并不是要返回错误,如:去获取一个商品时,由于某些原因商品 ID 没获取的,这时间我们返回一个提示性的数据“商品 ID 错误!”
实际项目的根据自己的需求来定格式就行了,这不是一个规范。
recall704
2017-02-03 17:28:29 +08:00
jwt
appstore001
2017-02-03 17:30:07 +08:00
每个开发者都需要这些东西,只是一般人想不了这么多,技术上也实现不了
erming
2017-02-03 17:32:37 +08:00
@CFO
不是说 get 请求要把信息放在 head 中,是说有些信息可以放到 head 里面
如: app 版本是 1.0 的,在请求服务器接口时 head 中加入 App-Version: 1.0
这是我们的做法,对您只是一个建议。
sobigfish
2017-02-03 17:32:37 +08:00
baiyi
2017-02-03 17:34:23 +08:00
@erming 嗯,我只是觉得 api 的返回应该尽量减少必要的数据.
就比如说商品这个例子,我觉得错误时应该是返回:
{
"error":"该商品不存在"
}
或者加一个`errorCode`:
{
"errorCode":"10086",
"errorMessage":"该商品不存在"
}

成功时就可以直接返回数据了啊:
{
"id":"1",
"name":"x 商品"
......
}
而没有必要加上 `error=false` 或者是 `errorCode=0` 来表示成功:
{
"errorCode":"0",
"id":"1",
"name":"x 商品"
......
}

成功或失败的表示应该存在于 HTTP status codes
erming
2017-02-03 17:35:20 +08:00
@Kilerd 虽然可以暴力破解,但现在应用的依然很广泛。
erming
2017-02-03 17:35:46 +08:00
@airyland 学习了^v^
hcymk2
2017-02-03 17:35:58 +08:00
又来了。 V2EX 能发投票贴么?
Kilerd
2017-02-03 17:44:39 +08:00
@erming 不懂为什么还要用这种能被破解的算法。顺便说下, RC4 已经能被破解了(不是遍历)。
有更好性能,更安全的算法不用,一定要等到被脱裤了才来哭,才来抱怨?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/337850

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX