Document
API 文档概述

更新时间:2021-04-10
复漫提供的服务端API总览。

第一节 授权验证

Fuman API 将使用oAuth进行身份验证,以便为其用户提供更好的安全性

  1. 管理员分配 user,authorization_code 及 对应权限

  2. 使用 authorization_code 获取 access_token

  3. 使用 refresh_token 刷新 access_token

  4. 说明:

    • authorization_code 为一次性使用,1小时内有效 英文字母和数字 随机 32位 组合

    • access_token 有效期为永久 构成 authorization_code+当前时间戳 32位MD5加密

    • 加密方式备选: Crype 不可逆加密 sha1 不可逆加密

    • access_token 存入数据库中 每次校验

    • refresh_token 伴随access_token 产生 产生格式 authorization_code+30日后时间戳 32位MD5加密

    • access_token 与 refresh_token 具有唯一性 access_token 有效期为 永久 过期作废

    • authorization_code 唯一性 有效期为 1小时 即 3600秒

  5. 备注:请注意,除非另有说明,否则我们API中的所有日期和时间始终为Asia/Shanghai。

    date_default_timezone_set('Asia/Shanghai');

    备选: UTC时间
    date_default_timezone_set('UTC');

第二节 请求格式

  1. 所有请求均以 POST 方式 发送 备选 PUT GET DELETE 等

  2. 说明
    访问令牌可以按以下格式包含在标头中
    Authorization: Bearer {access_token}
    将{access_token}替换为您access_token(不带花括号)
    备选
    参数 access_token

  3. 返回数据格式
    参数 format 'xml' 或者 'json', 默认'json'

    • JSON

      														{
          "code": "200",
          "message": "Success",
          "request_id": "1qaz2wsx3edc4rfv5tgb",
          "data": [
              "data"
          ],
          "paging": {
              "next": "",
              "prev": ""
          }
      }
      														
      													

    • JSON

      														<fuman>
          <code>200</code>
          <message>Success</message>
          <request_id>1qaz2wsx3edc4rfv5tgb</request_id>
          <data>
          	<Details>data</Details>
          </data>
          <paging>
          	<next></next>
          	<prev></prev>
          </paging>
      </fuman>
      														
      													

第三节 code message 说明

参数

参考

原因

200

message Success

请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。

202

message Accepted

服务器已接受请求,但尚未处理。 恶意请求等

400

message Bad Request + 具体错误说明

语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求 请求参数有误。

401

message Unauthorized

当前请求需要用户验证。

403

message Forbidden

服务器已经理解请求,但是拒绝执行它。

404

message Not Found

请求失败,请求所希望得到的资源未被在服务器上发现。

405

message Method Not Allowed

请求行中指定的请求方法不能被用于请求相应的资源。

406

message Not Acceptable

请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。

408

message Request Timeout

请求超时。

500

message Internal Server Error

服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理

501

message Not Implemented

服务器不支持当前请求所需要的某个功能。

503

message Service Unavailable

由于临时的服务器维护或者过载,服务器当前无法处理请求。

9**

unknown

已9开头的状态码为内部预留

第四节 分页

出于性能原因,此API有必要限制每个请求中返回的结果数。此限制因请求而异,但是任何响应中返回的项目数始终有上限。如果结果数量太大,则可以分多个请求浏览所有结果。

第五节 请求编号

request_id 为该次请求唯一id编号 构成 access_token+时间戳+5位随机字母 MD5加密

第六节 图片传输

转化为base64 base64_encode

第七节 请求频率

请求频率实现,使用redis内存数据库实现

第八节 相关规范

《开发编码规范》包含PHP代码规范、PHP注释规范等详细的PHP编码规范,主要是为了更好地提高PHP开发人员的工作效率,保证开发的有效性和合理性,并提高程序代码的可读性和可重复利用性,本规范的价值在于我们都遵循这个编码风格!

基本采用PEAR指定的规范,在其基础上增加、修改或删除部分适合具体开发环境的规范。

  1. PHP变量命名
    变量命名分为普通变量、静态变量、局部变量、全局变量、Session变量等方面的命名规则。

    • 普通变量
      普通变量命名遵循以下规则:
      A.所有字母都使用小写;
      B.对于一个变量使用多个单词的,使用’_'作为每个词的间隔。
      C.例如:$base_dir、$red_rose_price等

    • 静态变量
      静态变量命名遵循以下规则:
      A.静态变量使用小写的s_开头;
      B.静态变量所有字母都使用小写;
      C.多个单词组成的变量名使用’_'作为每个词的间隔。
      D.例子:$s_base_dir、$s_red_rose_prise等。

    • 局部变量
      局部变量命名遵循以下规则:
      A.所有字母使用小写;
      B.变量使用’_'开头;
      C.多个单词组成的局部变量名使用’_'作为每个词间的间隔。
      D.例子:$_base_dir、$_red_rose_price等。

    • 全局变量
      全局变量应该带前缀’g',知道一个变量的作用域是非常重要的。
      A.例如:global $gLOG_LEVEL;

    • 全局常量
      全局变量命名遵循以下规则:
      A.所有字母使用大写
      B.全局变量多个单词间使用’_'作为间隔。
      C.例子:$BASE_DIR、$RED_ROSE_PRICE等。

    • session变量
      session变量命名遵循以下规则:
      A.所有字母使用大写;
      B.session变量名使用’S_’开头;
      C.多个单词间使用’_'间隔。
      D.例子:$S_BASE_DIR、$S_RED_ROSE_PRICE等。

  2. PHP 类命名
    php中类命名遵循以下规则:

    • A.以大写字母开头;

    • B.多个单词组成的变量名,单词之间不用间隔,各个单词首字母大写。

    • C.例子:class MyClass 或class DbOracle等。

  3. PHP方法或函数
    方法或函数命名遵循以下规则:

    • A.首字母小写;

    • B.多个单词间不使用间隔,除第一个单词外,其他单词首字母大写。

    • C.例子:function myFunction ()或function myDbOracle ()等。

  4. PHP 缩写词
    当变量名或者其他命名中遇到缩写词时,参照具体的命名规则,而不采用缩写词原来的全部大写的方式。

    • A.例子:function myPear(不是myPEAR) functio getHtmlSource(不是getHTMLSource)。

  5. PHP数据库表名
    数据库表名命名遵循以下规范:

    • A.表名均使用小写字母;

    • B.对于普通数据表,使用db_开头;

    • C.对于多个单词组成的表名,使用_间隔

    • D.例子:db_goods和db_order_list等

  6. PHP 数据库字段
    数据库字段命名遵循以下规范:

    • A.全部使用小写;

    • B.多个单词间使用_间隔。

    • C.例子:user_name、rose_price等。

  7. PHP程序头注释块
    每个程序头部必须有统一的注释块,规则如下:

    • A.必须包含本程序的描述;

    • B.必须包含作者;

    • C.必须包含书写日期;

    • D.必须包含版本信息;

    • E.必须包含项目名称;

    • F.必须包含文件的名称;

    • G.重要的使用说明,如类的调用方法、注意事项等;

    • <?php
      //
      // +---------------------------------------------------------+
      // | PHP version 4.0                                         |
      // +---------------------------------------------------------+
      // | Copyright (c) 1997-2001 The PHP Group                   |
      // +---------------------------------------------------------+
      // | This source file is subject to  of the PHP license,     |
      // | that is bundled with this packafile LICENSE, and is     |
      // | available at through the world-web at                   |
      // | http://www.php.net/license/2_02.txt.                    |
      // | If you did not receive a copy of the  and are unable to |
      // | obtain it through the world-wide-web,end a note to      |
      // | license@php.net so we can mail you a immediately.       |
      // +---------------------------------------------------------+
      // | Authors: Stig Bakken <ssb@fast.no>                      |
      // |          Tomas V.V.Cox <cox@idecnet.com>                |
      // |                                                         |
      // +---------------------------------------------------------+
      //
      // $Id: Common.php,v 1.8.2.3 2001/11/13 01:26:48 ssb Exp $
      												
  8. PHP类的注释

    /** 
    * @ Purpose: 
    * 访问数据库的类,以ODBC作为通用访问接口 
    * @Package Name: Database 
    * @Author: Forrest Gump gump@crtvu.edu.cn 
    * @Modifications: 
    * No20020523-100: 
    * odbc_fetch_into()参数位置第二和第三个位置调换 
    * John Johnson John@crtvu.edu.cn 
    * @See: (参照) 
    */ 
    class Database { 
    …… 
    }
    										
  9. PHP函数和方法的注释

    /** 
    * @Purpose: 
    * 执行一次查询 
    * @Method Name: Query()
    * 
    * @Param: string $queryStr SQL查询字符串 
    * @Param: string $username 用户名
    * 
    * @Author: Michael Lee
    *
    * @Return: mixed 查询返回值(结果集对象) 
    */ 
    function($queryStr,$username)
    {……}
    										
  10. PHP变量或者语句注释
    程序中变量或者语句的注释遵循以下原则:

    • A.写在变量或者语句的前面一行,而不写在同行或者后面;

    • B.注释采用/* */的方式;

    • C.每个函数前面要包含一个注释块。内容包括函数功能简述,输入/输出参数,预期的返回值,出错代码定义

    • D.注释完整规范

    • E.把已经注释掉的代码删除,或者注明这些已经注释掉的代码仍然保留在源码中的特殊原因。

    • /** 
      * @Purpose: 
      * 数据库连接用户名 
      * @Attribute/Variable Name: db_user_name 
      * @Type: string 
      */ 
      var db_user_name;