资讯专栏INFORMATION COLUMN

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

BDEEFE / 2340人阅读

摘要:服务端架构代码源码部署说明现有基于框架开发,本次介绍也针对。如接口名,对应的类文件及类名为接口命名规范命名字母按功能或模块从大到小划分,依次编写如后台用户修改密码字母最后单词为操作。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21833.html

相关文章

  • PHP / Laravel API 开发推荐阅读清单

    showImg(https://segmentfault.com/img/bV6aHV?w=1280&h=800); 社区优秀文章 Laravel 5.5+passport 放弃 dingo 开发 API 实战,让 API 开发更省心 - 自造车轮。 API 文档神器 Swagger 介绍及在 PHP 项目中使用 - API 文档撰写方案 推荐 Laravel API 项目必须使用的 8 个...

    shmily 评论0 收藏0
  • PHP相关

    摘要:的机器学习库的机器学习库,包括算法交叉验证神经网络等内容。在即将到来的大会上,她将和大家分享在机器学习领域的全新可能。入门总结入门相关,如安装配置基本使用等。 基于 Swoole 开发 PHP 扩展 Swoole-1.9.7 增加了一个新特性,可以基于 Swoole 使用 C++ 语言开发扩展模块,在扩展模块中可以注册 PHP 内置函数和类。现在可以基于 Swoole 来编写 PHP ...

    lewinlee 评论0 收藏0
  • Laravel-Vue-SSR-SPA 服务渲染/单页面渲染实现骨架

    摘要:提供服务端渲染单页面渲染实现骨架同时集成打包构建文件名实现内置等套件提供端渲染方案前后端分离单页面方案前后端分离单页面方案等三种常见方案项目地址欢迎项目需求基于和提供的强大的功能组合并根据已有项目实践经验提供完整的集成方案帮助快速 Laravel-Vue-SSR-SPA 提供服务端渲染/单页面渲染实现骨架, 同时集成webpack打包构建 MD5文件名/gzip 实现, 内置 vue-...

    zr_hebo 评论0 收藏0
  • Laravel-Vue-SSR-SPA 服务渲染/单页面渲染实现骨架

    摘要:提供服务端渲染单页面渲染实现骨架同时集成打包构建文件名实现内置等套件提供端渲染方案前后端分离单页面方案前后端分离单页面方案等三种常见方案项目地址欢迎项目需求基于和提供的强大的功能组合并根据已有项目实践经验提供完整的集成方案帮助快速 Laravel-Vue-SSR-SPA 提供服务端渲染/单页面渲染实现骨架, 同时集成webpack打包构建 MD5文件名/gzip 实现, 内置 vue-...

    U2FsdGVkX1x 评论0 收藏0
  • Laravel 程序架构设计思路:使用动作类

    摘要:一个动作类,应该有一个能够说明其功能的名字,比如等。如果需要对我们的动作类实现某种适配器模式,这是非常方便的。使用单动作类的好处小巧而单一的逻辑域能够防止代码重复并提高代码的可重用性,保持稳定。易于针对各种场景进行独立测试。 showImg(https://segmentfault.com/img/remote/1460000015208092); 当我们谈论到应用程序的架构的时候,经...

    Caicloud 评论0 收藏0

发表评论

0条评论

BDEEFE

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<