基于Laravel的API服务端架构代码

来源:互联网 发布:美食大战老鼠卡片数据 编辑:程序博客网 时间:2024/06/06 20:36

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.phpAPI入口控制器app/Http/Controllers/Api/RouterController.php

API文档及开发规范

API调用协议

请求地址及请求方式

请求地址:/api/router;

请求方式:POST/GET

公共参数

参数名类型是否必须描述app_idstring是应用IDmethodstring是接口名称formatstring否回调格式,默认:json(目前仅支持)sign_methodstring否签名类型,默认:md5(目前仅支持)noncestring是随机字符串,长度1-32位任意字符signstring是签名字符串,参考签名规则

业务参数

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]方法不存在1009run方法不存在,请联系管理员1010[nonce]缺失1011[nonce]必须为字符串1012[nonce]长度必须为1-32位

API DEMO 示例

文件路径:app/Services/ApiServer/Response/Demo.php

转:https://segmentfault.com/a/1190000006178269

0 0
原创粉丝点击