这是一个非严格的restful风格的文档,输出格式仅支持json,请求动作只支持GET和POST.
php composer.phar require --prefer-dist wuyuxifeng/yii2-api
仓库地址 : https://gitee.com/wuyuxifeng/yii2-api
问题讨论: https://gitee.com/wuyuxifeng/yii2-api/issues
packagist.org : https://packagist.org/packages/wuyuxifeng/yii2-api
'modules'=>[
'myapi'=>[
'class'=>'wuyuxifeng\api\Module',
'apiConfig'=>require(__DIR__ . '/apiConfig.php'),
'openAccess'=>false,
'autoScanNamespace'=>['book\api\v2'],
'authType'=>'header',
'builtInAuthTypes'=>[
'header'=>'api\HttpHeaderAuth',
'query'=> 'wuyuxifeng\api\QueryParamAuth',
'bearer'=>'yii\filters\auth\HttpBearerAuth'
]
],
],
'bootstrap' => ['myapi'],
'components =>[
'user' => [
'identityClass' => 'wuyuxifeng\demo\Identity', //这是用与测试的Identity
],
]
myapi是module的名字,请自定义
接口文档 请访问 http://domain/myapi/doc
demo 访问 http://api.zzpan.net/api/doc
文件上传api demo: http://api.zzpan.net/api/doc/search?key=upload
文件上传demo: http://api.zzpan.net/test-upload.php
配置选项:
apiConfig : 接口定义的配置
defaultVersion : 默认的版本号
overviewHtml: 文档页面overview的模板
docTitle: 文档中心的标题
autoScanNamespace: 如果没有在apiConfig显示声明,将会自动扫描默认命名空间,扫描规则为:
'autoScanNamespace'=>['book\api\v2','book\api\v1']
responseClass: 响应的处理类, 如果想实现输出xml格式,请继承wuyuxifeng\api\Response重写render方法,配置即可
errorHandlerClass: 异常处理类,如果想实现默认的错误code不是500,而是 0,请重写该类,配置即可
openAccess: 是否开放访问文档中心,默认true表示开放。如果必须后台登陆之后才能访问请设置为false,继承wuyuxifeng\api\Module 重写checkAccess()方法,demo请看 wuyuxifeng\demo\Module
authType: Token认证处理类型配置,多个使用逗号分隔,eg:'query,bearer,header'. 现支持下面几种认证方式:
GET /apiurl HTTP/1.1
Host: server.example.com
X-Api-Key: token
GET /apiurl HTTP/1.1
Host: server.example.com
Authorization: Bearer token
builtInAuthTypes:认证类型的集合,可使用的认证过滤器参阅 \yii\filters\auth
// apiConfig.php ,可以参阅demo文件 wuyuxifeng\demo\apiConfig
// 分组可以是一个字符串,也支持数组配置;对于数组,且没有显示声明接口,将会自动扫描 autoScanNamespace命名空间;eg:myapi.html?method=book.test ,将会检测 \book\api\Test::class 是否存在;
//该配置优先于module的autoScanNamespace配置
return [
'v1'=>[
'user' => '用户', //key 不含有.符号的,用来分类/分组
'user.get' => ['class'=>'wuyuxifeng\demo\v1\user\Get','auth'=>true],
'user.get2' => 'wuyuxifeng\demo\v1\user\Get', //等同['class'=>'wuyuxifeng\demo\v1\user\Get']
'user.get3' => \wuyuxifeng\demo\v1\user\Get::class,
'book' =>[
'name'=>'分组名称',
'autoScanNamespace'=>'book\api', \\扫描命名空间
]
],
'v2'=>[
'user' =>'用户',
'user.get' => \wuyuxifeng\demo\v2\user\Get::class,
//.....
]
];
每个接口都有如下选项:
所有接口类必须要实现接口 \wuyuxifeng\api\IApi
class Test extends \wuyuxifeng\api\IApi{
function params(){}
function handle($params){}
function returnJson(){}
}
其中:
params() 示例如下:
function params(){
return [
'myfield'=>['type'=>'string','validate'=>'required,number,in:1|2|3','demo'=>'123','description'=>'描述','message'=>'自定义报错消息'],
'file1'=>['type'=>'string','validate'=>[
'file'=>[
'extensions'=>'jpg,gif,png',
'minSize'=>10240,
'maxFiles'=>1,
],
'required'
],'demo'=>'123','description'=>'二级制流文件上传,name=file1'],
];
}
其中:
boolean
: [[BooleanValidator]]captcha
: [[\yii\captcha\CaptchaValidator]]compare
: [[CompareValidator]]date
: [[DateValidator]]datetime
: [[DateValidator]]time
: [[DateValidator]]default
: [[DefaultValueValidator]]double
: [[NumberValidator]]each
: [[EachValidator]]email
: [[EmailValidator]]exist
: [[ExistValidator]]file
: [[FileValidator]]filter
: [[FilterValidator]]image
: [[ImageValidator]]in
: [[RangeValidator]]integer
: [[NumberValidator]]match
: [[RegularExpressionValidator]]required
: [[RequiredValidator]]safe
: [[SafeValidator]]string
: [[StringValidator]]trim
: [[FilterValidator]]unique
: [[UniqueValidator]]url
: [[UrlValidator]]ip
: [[IpValidator]]此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。