Appearance
Api文档 1.0
初始化说明
说明
LF 使用 dingo/api
框架作为reset 接口的组织方式, 采用服务器验证的方式来存储数据, 即服务器首次访问的时候会首先访问 /init
接口, 然后从中获取到 access_token
作为账号认证权限来对服务器进行再次请求, 作为访问的授权来进行访问, 访问地址是 : http://api.larxd.com/api
例如首次访问将会获取如下示例:
{
"code": "0000100",
"message": "初始化成功!",
"data": {
"api_version": "v1",
"api_url": "http://api.larxd.com/api"
"api_format": "jsonp",
"access_token": "91adcb71dc21e381dcad0611e1b7271c"
}
}
再次进行访问的时候将会传入这个值 access_token
, 否则将不会返回任何有效数据 ### sign 生成规范
# 输入的参数
$params = [
'app_version' => $app_version, # app 版本号
'device_type' => $device_type, # 设备类型
'device_id' => $device_id, # 设备ID号
'time' => $time, # app 获取到的时间戳
'crypt_key' => config('lemon.app_crypt_key'), # 加密密钥(服务器约定)
];
# 将所有的参数按照 键进行字母排序, 并且转换成 Kv 字串, 以上的参数会拼接成
# app_version=1.1.0,crypt_key=,device_id=mark_zhao_Sdvwyocj,device_type=ios,time=1449816499
# 然后对这个字串进行 sha1(md5($str)) 加密
请求规范
获取到上边获取到的 access_token
之后, 每次访问的时候需要用 header
头的方式代入这个参数. Header 头的值是 X-ACCESS-TOKEN
代码返回规范
Api 返回约束: 以服务端为准, 服务端可以进行处理的, 一律服务端进行处理, 减少app的处理 代码会返回一个json字串, 任何情况下都会. 即使是服务器错误也会返回, 其中代表的含义如下 - status
服务器错误码, 代表服务器出现错误, 500
代表内部查询出现问题, 404
代表页面不存在, 等 - status_text
服务器出错的时候, 这里的状态码代表出错时候的返回错误详情 - code
识别码, 如果该代码是 7 位数字字串, 则代表服务器请求正常, 这里代表的是 api 约定的错误或者正确类型, 则此时不会出现 status_code
自定义代码 如下分解 000
00
00
, 前三位代表 模块区分 中间两位代表 方法/动作, 最后两位代表错误码, 如果是 00
代表操作成功. - message
服务返回的提示信息, 如果存在 status_code
, 则代表服务报错信息, 如果是自定义的code, 这里返回的是自定义的提示信息 - data
返回正确的时候, data
中会存在附加数据, 附加数据说明放置在api 文档中, 这里不做任何补充提示.
下边是示例代码:
有服务器错误
{
"readyState": 4,
// ...
"status": 500,
"statusText": "Internal Server Error"
}
服务器无错误
{
"code": "0010200",
"message": "获取用户信息成功!",
"data": {
"username": "dashou001",
"userid": 123354,
}
}
Api 文档生成/测试
工具
访问 http://apidocjs.com/ 来获取使用说明
安装并生成文档
安装nodejs
$ apt-get install nodejs
安装node
nodejs 访问地址 https://nodejs.org/en/, 具体版本号访问这个地址获取
$ wget http://nodejs.org/dist/vx.xx.xxx/node-*.tar.gz
$ tar zxvf node-*.tar.gz
$ ./configure
$ make && make install
淘宝 npm 镜像 安装淘宝镜像, 使用淘宝镜像访问 node 库, 访问速度会快一些
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
全局安装
$ cnpm install apidoc -g
生成文档
$ apidoc -i app/Http/Controllers/Api/ -o public/docs/api
访问Api 文档
使用浏览器打开 ~/public/docs/api/index.html
在测试文档的右侧打开此文档
- set AT : 设置 AccessToken
- clear AT : 清空 AccessToken
使用 api 文档做测试
接口测试访问地址
http://www.larxd.com/dev_api/auto
访问接口的位置
因为请求的时候需要设置 access_token
的值, 所以每次请求前必须保证初始化时候 X-ACCESS-TOKEN
的值是存在的, 所以必须设置下token 值
Api 文件写法
路由写法
路由放置在 app\Http\Routes\api.php
文件中, 写法遵循 dingo/api
写法. 另外还有几项约定 版本 版本使用 v 开头, 数字结尾, 类似于 v1,v2,v3, 不允许出现小数点 命名 api 命名采用 api_
作为前缀, 后边跟控制器的小写, 例如 HomeController
的名称是 api_home
, 再后边则是方法名, 为了体现是接口调用, 接口中的方法采用 getXxxx
, postXxxx
来表明这是一个 post
请求或者是 get
请求
$api = app('api.router');
$api->version(['v1'], function ($api) {
// init
$api->get('init', [
'as' => 'api_home.init',
'uses' => 'App\Http\Controllers\Api\Front\HomeController@getInit'
]);
// account
$api->post('account/edit', [
'as' => 'api_account.edit',
'uses' => 'App\Http\Controllers\Api\Front\AccountController@postEdit'
]);
});
返回值
返回采用 api_end($trans, $append=null)
helper 函数来调用返回, 第一个传值调用的是对应的状态码说明, 第二个调用的是附加数据. 如果没有特殊提示返回 可以传值 success
, error
, 则默认返回 api_account.php
语言包中的 request_success
和 request_error
两个默认值. 如果传值使用 helper 函数 trans($key)
来调用, 因为可以用 Laravel Plugin ( phpstorm 的 Laravel ) 实现对语言包文件的跟踪. 示例:
php
public function getInit(Request $request) {
$device_id = $request->input('device_id');
// 设备序列号
$time = $request->input('time');
$sign = $request->input('sign');
$device_type = $request->input('device_type');
$app_version = $request->input('app_version');
// 验证这些值是否符合指定规则
$validator = \Validator::make($request->all(), [
'device_id' => 'required',
'time' => 'required',
'sign' => 'required',
'device_type' => 'required',
'app_version' => 'required',
]);
if ($validator->fails()) {
return api_end($validator->errors());
}
...
if (!$accessToken) {
return api_end(\Api::getError());
}
$apiInfo = [
'api_version' => config('api.version'),
'api_domain' => config('api.domain'),
'api_format' => config('api.defaultFormat'),
'access_token' => $accessToken,
];
return api_end(trans('api_front.init_success'), $apiInfo);
}
版本说明
- 2015-12-12 : 加入淘宝镜像安装方法
- 2015-12-11 : 更改返回错误码