美文网首页
Yii2构建RESTFull接口

Yii2构建RESTFull接口

作者: itBox | 来源:发表于2022-10-24 10:47 被阅读0次

项目中用到了小程序调用RESTFull接口,故用Yii2快速实现一套RESTFull接口,需要的小伙伴直接拿走。

直接上代码:

<?php
namespace app\modules\api\controllers;

use yii\rest\ActiveController;
use \yii\base\DynamicModel;

class ApiBaseController extends ActiveController {
    public function beforeAction($action)
    {
       return \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    }

    //支持 filter 检索
    public function actions()
    {
        $actions = parent::actions();
        $actions['index']['dataFilter'] = [
            'class' => \yii\data\ActiveDataFilter::class,
            'attributeMap' => [
                'clockIn' => 'clock_in',
            ],
            'searchModel' => (new DynamicModel(['id', 'age_id', 'cat_id', 'topic_id', 'member_id', 'book_id','status','clockIn']))
                ->addRule(['id', 'age_id', 'cat_id', 'topic_id', 'member_id', 'book_id'], 'integer', ['min' => 1])
                ->addRule(['title'], 'string', ['min' => 2, 'max' => 200])
                ->addRule(['status', 'clockIn'], 'integer')
                // ->addRule(['status', 'clockIn'], 'string')
                ,
        ];
        
        return $actions;
    }
    protected function renderJSON($data=[], $msg ="ok", $code = 200)
    {
        return [
            "code" => $code,
            "msg"   =>  $msg,
            "data"  =>  $data,
            "req_id" =>  uniqid()
        ];
        // 因 beforeAction 中定义了 response->format = FORMAT_JSON
        //这个直接 return [] 就是返回 JSON 数据
        header('Content-type: application/json');
        echo json_encode([
            "code" => $code,
            "msg"   =>  $msg,
            "data"  =>  $data,
            "req_id" =>  uniqid()
        ]);
        return \Yii::$app->end();
    }
    public function post($key, $default = "") {
        return \Yii::$app->request->post($key, $default);
    }

    public function get($key, $default = "") {
        return \Yii::$app->request->get($key, $default);
    }
}

说明:
重写父类 actions() 方法,实现对 filter 关键词检索的支持,这里有空可以多研究一下。

renderJSON 方法:因 beforeAction 中定义了 response->format = FORMAT_JSON
这个直接 return [] 就是返回 JSON 数据

相关文章

  • Yii2构建RESTFull接口

    项目中用到了小程序调用RESTFull接口,故用Yii2快速实现一套RESTFull接口,需要的小伙伴直接拿走。 ...

  • Restfull API 示例

    什么是Restfull API Restfull API 从字面就可以知道,他是rest式的接口,所以就要先了解什...

  • RESTfull接口规范

    REST 是Representational State Transfer的缩写,翻译是”表现层状态转化”。 可以...

  • Yii2的restfullAPI用filter来检索数据

    默认的Yii2架构好restfull api 之后,发现get是不支持filter检索,各种配置测试不行,还得是g...

  • RestTemplate踩坑笔记-中文乱码与json被解析成xm

    1.RestTemplate访问Restfull接口:中文乱码+返回数据格式为xml Spring Cloud项目...

  • 接口设计评审规范

    接口设计评审规范 前言 本接口设计规范,参考了restfull的部分设计理念。 以资源为中心的接口设计 资源是 R...

  • axios get 发送数组的坑

    起因,公司后台使用restfull 风格的api , 后台接口他们已经用个方法完全封装好了,所以所有 请求的得在前...

  • MixPHP 独特的SQL构建方式

    独特的SQL构建方式 MixPHP 对CUD这些写操作都有专用方法,可快速构建,使用方法也与 Yii2 完全一至,...

  • 3. 创建服务提供者

    服务提供者: 数据访问层操作 服务消费者: 业务访问层还有提供 restfull 风格的接口 前后分离:前端不能用...

  • 环信Restfull API dotnetSDK

    Easemob.Restfull4Net 环信Restfull API dotnet的封装 支持的.Net Fra...

网友评论

      本文标题:Yii2构建RESTFull接口

      本文链接:https://www.haomeiwen.com/subject/rexgzrtx.html