php 接口 2.0,YII 2.0 API接口开发

YII2.0 API接口开发

首先先安装 YII2.0 高级模板(安装请参考其他教程)

准备

添加数据库配置 common/config/main-local.php

5427f10166e5

image

把backend目录 修改成api 修改目录下相关文件的命名空间 修改api/config/main.php下 id 和命名空间

5427f10166e5

image

看下项目的目录结构

5427f10166e5

image

建立AR类 参考开发手册 (可通过 GII生成)

5427f10166e5

image

开始

建立 api基类

/**

* api 基类

* Created by PhpStorm.

* Author: L

* Date: 2019/1/9

* Time: 9:33

*/

namespace api\controllers;

use Yii;

use yii\filters\ContentNegotiator;

use yii\filters\VerbFilter;

use yii\rest\ActiveController;

use yii\web\Response;

use yii\filters\auth\QueryParamAuth;

use yii\filters\auth\HttpBasicAuth;

use yii\filters\auth\CompositeAuth;

use yii\filters\Cors;

class ApiController extends ActiveController

{

public function behaviors()

{

$behaviors = parent::behaviors();

$behaviors['authenticator'] = [

'class' => CompositeAuth::className(),

'authMethods' => [

QueryParamAuth::className(),

],

// 写在optional里的方法不需要token验证

'optional' => [

'login'

],

];

// 这个是跨域配置

$behaviors['corsFilter'] = [

'class' => Cors::className(),

'cors' => [

'Origin' => ['*'],

// restrict access to

'Access-Control-Request-Method' => ['POST', 'GET', 'DEL'],

// Allow only POST and PUT methods

'Access-Control-Request-Headers' => ['Origin', 'X-Requested-With', 'Content-Type', 'Accept'],

// Allow only headers 'X-Wsse'

'Access-Control-Allow-Credentials' => true,

// Allow OPTIONS caching

'Access-Control-Max-Age' => 3600,

// Allow the X-Pagination-Current-Page header to be exposed to the browser.

'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'],

],

];

# 定义返回格式是:JSON

$behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;

return $behaviors;

}

}

在config/ main.php-> components 里添加 response, 这串代码的用途是让 api 请求均为 200,其他 http 状态码会以 json

数据返回

'class' => 'yii\web\Response',

'on beforeSend' => function ($event) {

$response = $event->sender;

$response->data = [

'success' => $response->isSuccessful,

'code' => $response->getStatusCode(),

'message' => $response->statusText,

'data' => $response->data,

];

$response->statusCode = 200;

},

],```

添加url美化

``` 'urlManager' => [

'enablePrettyUrl' => true,

'showScriptName' => false,

'enableStrictParsing' => false, // 是否执行严格的url解析

'suffix' => '.html', // api后缀

'rules' => [

'class'=>'yii\rest\UrlRule','controller'=>''

],

],

开启验证

5427f10166e5

图片.png

如果不需要可以注释掉

如果直接访问未应许的方法 会报401错误

5427f10166e5

图片.png

添加例外之后

5427f10166e5

图片.png

到此 第一个api应用接口编写完成

api版本控制

在开发过程中往往会涉及到版本的更新迭代

5427f10166e5

图片.png

这个就是版本的目录

准备

建立models目录

用gii去生成

5427f10166e5

图片.png

使用上图这个

修改api/config/main.php

5427f10166e5

图片.png

在控制下建立一个控制器 比如

5427f10166e5

图片.png

我建立了一个测试控制器

/**

* 文件功能

* Created by PhpStorm.

* Author: L

* Date: 2019/1/9

* Time: 9:14

*/

namespace api\modules\v1\controllers;

use api\controllers\ApiController;

use api\models\Category;

use yii\filters\auth\HttpBearerAuth;

class TestController extends ApiController

{

public $modelClass='api\models\Category';

public function actionList(){

return Category::find()->select('id,category_name')->where(['isdelete'=>0])->all();

}

public function actionLogin(){

return '123';

}

}

5427f10166e5

图片.png

成功

码云的地址链接直接git下来就行了

初学YII请多多包涵!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Yii2进行API接口开发的RBAC实例: 1.首先,您需要安装Yii2框架并创建一个新的Yii2应用程序。 2.然后,您需要安装Yii2的RBAC扩展。您可以通过在终端中运行以下命令来完成此操作: ```shell composer require "yiisoft/yii2-rbac:*" ``` 3.接下来,您需要配置您的应用程序以使用RBAC扩展。您可以在您的应用程序配置文件中添加以下内容: ```php 'components' => [ 'authManager' => [ 'class' => 'yii\rbac\DbManager', ], ], ``` 4.然后,您需要创建RBAC权限和角色。您可以在控制台中运行以下命令来完成此操作: ```shell ./yii rbac/init ``` 5.接下来,您需要创建一个控制器来处理API请求。您可以使用以下代码作为示例: ```php namespace app\controllers; use yii\rest\ActiveController; use yii\filters\auth\HttpBearerAuth; class PostController extends ActiveController { public $modelClass = 'app\models\Post'; public function behaviors() { $behaviors = parent::behaviors(); $behaviors['authenticator'] = [ 'class' => HttpBearerAuth::className(), ]; return $behaviors; } public function checkAccess($action, $model = null, $params = []) { if ($action === 'create' || $action === 'update' || $action === 'delete') { if (!\Yii::$app->user->can('managePosts')) { throw new \yii\web\ForbiddenHttpException('You are not allowed to perform this action.'); } } } } ``` 6.最后,您需要定义RBAC权限和角色。您可以使用以下代码作为示例: ```php $auth = Yii::$app->authManager; // 添加 "managePosts" 权限 $managePosts = $auth->createPermission('managePosts'); $managePosts->description = 'Manage posts'; $auth->add($managePosts); // 添加 "admin" 角色并赋予 "managePosts" 权限 $admin = $auth->createRole('admin'); $auth->add($admin); $auth->addChild($admin, $managePosts); // 将 "admin" 角色分配给用户 $auth->assign($admin, 1); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值