Fecshop Api 介绍和配置 ¶
fecshop api这个入口的定位是和第三方系统对接的api部分,譬如和ERP, 进行订单传递和产品刊登等,以及erp把订单的物流状态传递个fecshop网站 等等
配置: ¶
fecshop appapi的配置文件为:@fecshop/app/appapi/config/appapi.php
本地appapi的配置文件路径为:@appapi/config/fecshop_local.php
1.速度控制
速度控制,只对需要token验证的api有效。
1.1、打开文件:@appapi/config/fecshop_local.php
,
将下面的代码中的enable 的值改为true
即可。
'rateLimit' => [
'enable'=> false, // 是否开启?默认不开启速度控制。
'limit' => [120, 60], // 速度控制[120,60] 代表 60秒内最大访问120次,
]
速度控制,只对需要access-token的api有效,开启速度控制,访问api后, 在response header中可以发现如下参数:
X-Rate-Limit-Limit
: 同一个时间段所允许的请求的最大数目;
X-Rate-Limit-Remaining
: 在当前时间段内剩余的请求的数量;
X-Rate-Limit-Reset
: 为了得到最大请求数所等待的秒数。
调用fecshop api的第三方系统,可以根据这些信息,来控制好访问 api的频率。
1.2、将User组件的identityClass
设置成相应的model
@appapi/config/main.php
找到user组件配置的部分,更改成如下:
'user' => [
// 【默认】不开启速度限制的 User Model
// 'identityClass' => 'fecshop\models\mysqldb\AdminUser',
// 开启速度限制的 User Model
'identityClass' => 'fecshop\models\mysqldb\adminUser\AdminUserAccessToken',
//'enableAutoLogin' => true,
],
更改完后,appapi端,api速度限制就开启了。
2.api response header 参数介绍
在访问列表类型的api时,在response header里面会有如下参数,譬如访问
/v1/article/list
在response header里面就会看到下面4个X大头的参数。
X-Pagination-Total-Count
: 资源所有数量;
X-Pagination-Page-Count
: 页数;
X-Pagination-Current-Page
: 当前页(从1开始);
X-Pagination-Per-Page
: 每页资源数量;
Link
: 允许客户端一页一页遍历资源的导航链接集合.
3.设置token过期时间
可以在本地配置文件:@appapi/config/fecshop_local_services/Session.php
中配置如下:
'timeout' => 3600,
// 【对phpsession 无效】当过期时间+session创建时间 - 当前事件 < $updateTimeLimit ,则更新session创建时间
'updateTimeLimit' => 600,
// 【不可以设置phpsession】默认为php session,只有当 \Yii::$app->user->enableSession == false时,下面的设置才有效。
// 存储引擎 mongodb mysqldb redis
'storage' => 'SessionMysqldb',
timeout
: token的过期时间(秒),设置该参数即可设置token的过期时间
4.开发方式
如果您是推数据给第三方系统 ,这种情况属于您调用第三方的接口,而不是提供,因此,您可以在console入口中写一个批处理 脚本,然后在linux cron中设置定时任务,进行定时推送数据相应的接口中 ,如果您提供api给第三方系统使用,那么需要本入口提供api支持,可以参看下面的内容。
因为和第三方进行对接,有很多自定义的地方,因此, 除了fecshop默认提供的api之外,您可能要做自己二开的api
4.1 不需要用户安全认证,任何人都可以直接访问的接口
这种情况很少,一般都需要做用户登录认证,如果您有这种情况,
那么,您新建的controller可以继承
fecshop\app\appapi\modules\AppapiController
,
譬如:登录账户获取token的接口:@fecshop\app\appapi\modules\V1\controllers\AccountController
4.2 需要用户安全认证,只有合法的用户才能访问该接口
一般和第三方系统交互,都需要用户做登录获取token后,然后通过token做合法性认证,
这类方面的需求,那么,您新建的controller可以继承
fecshop\app\appapi\modules\AppapiTokenController
继承后,访问您新建的controller里面的action方法,都需要token验证, token验证不通过将不允许访问api。
关于token的获取和token的使用详细,可以参看文章: Fecshop Api 登录和验证