zoukankan      html  css  js  c++  java
  • 基于 Laravel 的 API 服务端架构代码

    1、源码地址

    原文出处:http://flc.ren/2016/08/549.html GitHub:https://github.com/flc1125/ApiServer

    2、部署说明

    现有API基于laravel框架开发,本次介绍也针对laravel。可根据文档自行调整,以适用其他框架下使用!

    2.1 数据库相关

    执行如下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='应用表';

    2.2 目录相关

    标题路径
    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

    3、API文档及开发规范

    3.1 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)
    • 将摘要得到的字节结果使用大写表示

    返回结果

     
     
    1
    // 成功
    {
        "status": true,
        "code": "200",
        "msg": "成功",
        "data": {
            "time": "2016-08-02 12:07:09"
        }
    }
    // 失败
    {
        "status": false,
        "code": "1001",
        "msg": "[app_id]缺失"
    }

    3.2 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

  • 相关阅读:
    maven安装和配置
    maven的安装和配置
    mac上pydev
    Android自动化----adb shell,appium,uiautomator2
    Django
    centos操作---搭建环境 安装python
    Linux系统centos中sudo命令不能用----提升权限
    python---numpy
    python-socket
    Le x820 的刷机记录
  • 原文地址:https://www.cnblogs.com/aipiaoborensheng/p/12785249.html
Copyright © 2011-2022 走看看