更新时间:2021-04-10
复漫提供的服务端API总览。
第一节 授权验证
Fuman API 将使用oAuth进行身份验证,以便为其用户提供更好的安全性
-
管理员分配 user,authorization_code 及 对应权限
-
使用 authorization_code 获取 access_token
-
使用 refresh_token 刷新 access_token
-
说明:
-
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秒
-
-
备注:请注意,除非另有说明,否则我们API中的所有日期和时间始终为Asia/Shanghai。
date_default_timezone_set('Asia/Shanghai');
备选: UTC时间date_default_timezone_set('UTC');
第二节 请求格式
-
所有请求均以 POST 方式 发送 备选 PUT GET DELETE 等
-
说明
访问令牌可以按以下格式包含在标头中
Authorization: Bearer {access_token}
将{access_token}替换为您access_token(不带花括号)
备选
参数 access_token -
返回数据格式
参数 format 'xml' 或者 'json', 默认'json'-
JSON
{ "code": "200", "message": "Success", "request_id": "1qaz2wsx3edc4rfv5tgb", "data": [ "data" ], "paging": { "next": "", "prev": "" } } -
JSON
200Success 1qaz2wsx3edc4rfv5tgb data
-
第三节 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指定的规范,在其基础上增加、修改或删除部分适合具体开发环境的规范。
-
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等。
-
-
PHP 类命名
php中类命名遵循以下规则:-
A.以大写字母开头;
-
B.多个单词组成的变量名,单词之间不用间隔,各个单词首字母大写。
-
C.例子:class MyClass 或class DbOracle等。
-
-
PHP方法或函数
方法或函数命名遵循以下规则:-
A.首字母小写;
-
B.多个单词间不使用间隔,除第一个单词外,其他单词首字母大写。
-
C.例子:function myFunction ()或function myDbOracle ()等。
-
-
PHP 缩写词
当变量名或者其他命名中遇到缩写词时,参照具体的命名规则,而不采用缩写词原来的全部大写的方式。-
A.例子:function myPear(不是myPEAR) functio getHtmlSource(不是getHTMLSource)。
-
-
PHP数据库表名
数据库表名命名遵循以下规范:-
A.表名均使用小写字母;
-
B.对于普通数据表,使用db_开头;
-
C.对于多个单词组成的表名,使用_间隔
-
D.例子:db_goods和db_order_list等
-
-
PHP 数据库字段
数据库字段命名遵循以下规范:-
A.全部使用小写;
-
B.多个单词间使用_间隔。
-
C.例子:user_name、rose_price等。
-
-
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 $
-
-
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 { …… } -
PHP函数和方法的注释
/** * @Purpose: * 执行一次查询 * @Method Name: Query() * * @Param: string $queryStr SQL查询字符串 * @Param: string $username 用户名 * * @Author: Michael Lee * * @Return: mixed 查询返回值(结果集对象) */ function($queryStr,$username) {……} -
PHP变量或者语句注释
程序中变量或者语句的注释遵循以下原则:-
A.写在变量或者语句的前面一行,而不写在同行或者后面;
-
B.注释采用/* */的方式;
-
C.每个函数前面要包含一个注释块。内容包括函数功能简述,输入/输出参数,预期的返回值,出错代码定义
-
D.注释完整规范
-
E.把已经注释掉的代码删除,或者注明这些已经注释掉的代码仍然保留在源码中的特殊原因。
-
/** * @Purpose: * 数据库连接用户名 * @Attribute/Variable Name: db_user_name * @Type: string */ var db_user_name;
-
