基于Laravel的API服务端架构代码
API服务端架构代码
源码
http://flc.ren/2016/08/549.html
https://github.com/flc1125/Ap...
部署说明
现有API基于laravel框架开发,本次介绍也针对laravel。可根据文档自行调整,以适用其他框架下使用
数据库相关
执行如下SQL语句
CREATE TABLE prefix_apps
(id
INT(10) NOT NULL AUTO_INCREMENT COMMENT '自增长',app_id
VARCHAR(60) NOT NULL COMMENT 'appid',app_secret
VARCHAR(100) NOT NULL COMMENT '密钥',app_name
VARCHAR(200) NOT NULL COMMENT 'app名称',app_desc
TEXT COMMENT '描述',status
TINYINT(2) DEFAULT '0' COMMENT '生效状态',created_at
INT(10) NOT NULL DEFAULT '0' COMMENT '创建时间',updated_at
INT(10) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (id
),
UNIQUE KEY app_id
(app_id
),
KEY status
(status
)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='应用表';
目录相关
标题
路径
API核心目录
app/Services/ApiServer/
API接口目录
app/Services/ApiServer/Response/
apps数据库模型
app/Models/App.php
路由配置
app/Http/routes.php
API入口控制器
app/Http/Controllers/Api/RouterController.php
API文档及开发规范
API调用协议
请求地址及请求方式
请求地址:/api/router;
请求方式:POST/GET
公共参数
参数名
类型
是否必须
描述
app_id
string
是
应用ID
method
string
是
接口名称
format
string
否
回调格式,默认:json(目前仅支持)
sign_method
string
否
签名类型,默认:md5(目前仅支持)
nonce
string
是
随机字符串,长度1-32位任意字符
sign
string
是
签名字符串,参考签名规则
业务参数
API调用除了必须包含公共参数外,如果API本身有业务级的参数也必须传入,每个API的业务级参数请考API文档说明。
签名规则
对所有API请求参数(包括公共参数和请求参数,但除去sign参数),根据参数名称的ASCII码表的顺序排序。如:foo=1, bar=2, foo_bar=3, foobar=4排序后的顺序是bar=2, foo=1, foo_bar=3, foobar=4。
将排序好的参数名和参数值拼装在一起,根据上面的示例得到的结果为:bar2foo1foo_bar3foobar4。
把拼装好的字符串采用utf-8编码,使用签名算法对编码后的字节流进行摘要。如果使用MD5算法,则需要在拼装的字符串前后加上app的secret后,再进行摘要,如:md5(secret+bar2foo1foo_bar3foobar4+secret)
将摘要得到的字节结果使用大写表示
返回结果
// 成功
{
"status": true,
"code": "200",
"msg": "成功",
"data": {
"time": "2016-08-02 12:07:09"
}
}
// 失败
{
"status": false,
"code": "1001",
"msg": "[app_id]缺失"
}
API开发规范
API接口命名规范(method)
接口名称统一小写字母
多单词用.隔开
对应的类文件(目录:app/Services/ApiServer/Response/);以接口名去.,再首字母大写作为类名及文件名。如接口名:user.add,对应的类文件及类名为:UserAdd
接口命名规范
命名字母按功能或模块从大到小划分,依次编写;如后台用户修改密码:'admin.user.password.update'
- 字母最后单词为操作。查询:get;新增:add;更新:update;删除:delete;上传:upload;等
错误码
错误码配置:app/Services/ApiServer/Error.php
命名规范:
类型
长度
说明
系统码
3
同http状态码
公共错误码
4
公共参数错误相关的错误码
业务错误码
6+
2位业务码+4位错误码,不足补位
现有错误码:
错误码
错误内容
200
成功
400
未知错误
401
无此权限
500
服务器异常
1001
[app_id]缺失
1002
[app_id]不存在或无权限
1003
[method]缺失
1004
[format]错误
1005
[sign_method]错误
1006
[sign]缺失
1007
[sign]签名错误
1008
[method]方法不存在
1009
run方法不存在,请联系管理员
1010
[nonce]缺失
1011
[nonce]必须为字符串
1012
[nonce]长度必须为1-32位
API DEMO 示例
文件路径:app/Services/ApiServer/Response/Demo.php
关键字:php, api, api设计, laravel
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!