Funboot开发:API接口Restful

Api

模块规划

  • v1 app通用接口,支持相同接口不同版本
  • v2 app通用接口,支持相同接口不同版本
  • mini 微信小程序api目录
  • xx 其他自定义模块接口

自定义返回格式

继承api/components/response/ResponseAbstract

RESTFUL方法

#MethodURL说明
列表GET/api/students获取列表
查看GET/api/students/1单个
创建POST/api/students新建,www-form-urlencoded
更新PUT/api/students/1更新,www-form-urlencoded
删除DELETE/api/students/1删除单个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n7TKq4KK-1634199355765)(images/api-rest-index.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i0gJfmGr-1634199355767)(images/api-rest-view.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-teR6LpDn-1634199355769)(images/api-rest-post.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GO4SxTme-1634199355770)(images/api-rest-put.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u76lxetf-1634199355771)(images/api-rest-delete.png)]

  • 需要在api/config/main.php中配置支持rest的controller (注意如果common/config/main.php中配置了urlManager可能会冲突)
        'urlManager' => [
            ...
            'rules' => [
                [
                    'class' => 'yii\rest\UrlRule',
                    'controller' => [
                        'student',
                        'v1/user',
                    ]
                ],
            ],
        ],

权限控制

通过SiteController中actionLogin登录获取access_token

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wWNvwCeF-1634199355772)(images/api-login.png)]

默认的api/controller/BaseController支持的方法index, view, create, update, delete都需要提供access-token,注意返回的是access_token

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z0kwGxvJ-1634199355773)(images/api-access-token.png)]![]

如果函数不需要鉴权,在controller中的optionalAuth变量中写入action id

使用refresh_token重新更新access_token

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I6X2CmLE-1634199355774)(images/api-refresh-token.png)]

    public $optionalAuth = ['index', 'login', 'logout'];
  • 注销

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0re3cktQ-1634199355775)(images/api-logout.png)]

  • 如果需要RBAC鉴权或其他方式,在api/controller/BaseController中覆盖checkAccess函数

  • 其他方式登录可以参考v1/controller/DefaultController中的actionLogin

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9hZz3pO9-1634199355776)(images/api-login-email.png)]

频率限制

使用yii\filters\RateLimiter来控制,在params.php中

    //速率限制,如 100s 内 20 次,可以在param.php中设置频率
    'rateLimit' => 20,
    'timeLimit' => 100,

也可以修改api/models/User.php中变量

    //速率限制,如 100s 内 20 次,可以在param.php中设置频率
    public $rateLimit = 20;
    public $timeLimit = 100;

字段控制

如果不需要的字段,可以通过fields()和extraFields()来控制,在extraFields中的Model中要有对应的getXxx函数,如api/models/User.php

class User extends \common\models\User implements RateLimitInterface
{
    public function fields()
    {
        return ['id', 'access_token', 'store'];
    }

    public function extraFields()
    {
        return ['store'];
    }
}

参考

  • https://github.com/yiisoft/yii2/blob/master/docs/guide-zh-CN/rest-quick-start.md
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值