基于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文档说明。

签名规则

  1. 对所有API请求参数(包括公共参数和请求参数,但除去sign参数),根据参数名称的ASCII码表的顺序排序。如:foo=1, bar=2, foo_bar=3, foobar=4排序后的顺序是bar=2, foo=1, foo_bar=3, foobar=4。

  2. 将排序好的参数名和参数值拼装在一起,根据上面的示例得到的结果为:bar2foo1foo_bar3foobar4。

  3. 把拼装好的字符串采用utf-8编码,使用签名算法对编码后的字节流进行摘要。如果使用MD5算法,则需要在拼装的字符串前后加上app的secret后,再进行摘要,如:md5(secret+bar2foo1foo_bar3foobar4+secret)

  4. 将摘要得到的字节结果使用大写表示

返回结果

// 成功
{
"status": true,
"code": "200",
"msg": "成功",
"data": {
"time": "2016-08-02 12:07:09"
}
}

// 失败
{
"status": false,
"code": "1001",
"msg": "[app_id]缺失"
}

API开发规范

API接口命名规范(method)

  1. 接口名称统一小写字母

  2. 多单词用.隔开

  3. 对应的类文件(目录:app/Services/ApiServer/Response/);以接口名去.,再首字母大写作为类名及文件名。如接口名:user.add,对应的类文件及类名为:UserAdd

  4. 接口命名规范

命名字母按功能或模块从大到小划分,依次编写;如后台用户修改密码:'admin.user.password.update'

  1. 字母最后单词为操作。查询: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

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部