klib/jk-laravel-feapi

这是一个简单的支持RESTful接口的前后端组件模块,从JKGlib框架移植到Laravel框架

v7.2.3 2021-03-03 02:37 UTC

This package is auto-updated.

Last update: 2024-09-29 05:49:04 UTC


README

  • 这是一个简单的支持RESTful接口的前后端组件模块,从JKGlib框架移植到Laravel框架。
  • 支持简单的在线API接口文档,方便前后端开发人员进行对接。
  • 该组件7.x版本支持Laravel5.5.*版本

版本说明

  • v7.2.3版本,修正了7.2.2版本的man.blade.php视图的一些问题
  • v7.2.2版本,修正了7.2.0版本的man.blade.php视图的一些问题
  • v7.2.0版本,CFEApiScheduler::GetResult($request, $app, $parma_arr) 新增$parma_arr,从而可以为初始化操作添加构造参数
  • v7.1.1版本,修正了上一个版本的一些问题。
  • v7.1.0版本,在AbsFEApiParamMan方法中新增setMeta()和getMeta()方法
该方法可以从request 对象中接收 meta get参数,用于后续拓展API功能,这个方法会通常会返回一个键值数组。
  • v7.0.1基础版本,刚刚从JKGLib框架中移植过来。
  • v7.0.2版本,新增README.md和CFEApiViewProvider类。

安装

  • 使用composer进行安装 composer require klib/jk-laravel-feapi
  • 安装后需要进行简单的配置。

创建config/feapi.php配置文件

  • 这里定义的是AbsFEApiParamMan的子类,也就是具体实现类。
  • 该文件内容如下:(距离中只有一个CFEApiExample)
<?php

return [

    'apps' => [
        # 类名称 => 具体位置,CFEApiExample 是一个测试样例
        'example' => 'KLib\FEApiLaravel\CFEApiExample',
    ],

];

注入视图提供者

  • 修改Laravel项目的config/app.php
# 找到 providers 数组定义区块,新增条目,只有这样手册的视图才能被正常解析。
KLib\FEApiLaravel\Providers\CFEApiViewProvider::class,

新增接口路由

  • 因为当前版本组件并没有整合路由(稍后会整合),所以还需要在routes/web.php中添加路由才可以使用接口。
// API 程序入口,URL 中需要传入3个参数,分别是 pid【平台id】, ic【对应的API名称】, im 【对应的方法名称】
// for example: /api?ic=example&im=additive&fps[a]=5&fps[b]=6
Route::any('/api', function (Request $request, Application $app) {
    return CFEApiScheduler::GetResult($request, $app);
})->name('feapi');


Route::any('/man', function (Request $request, Application $app) {
    $feobj = CFEApiScheduler::CreateApi($request, $app);

    if($request->isMethod('post')) {
        // 如果有post 值,有可能是提交了手册的密码
        $inpwd = $request->input('verfiypassword');
        // 登录
        $feobj->signinVerifyPassword($inpwd);

    }

    return view('feapi::man', ['api_obj' => $feobj, 'api_routername'=>'feapi', 'api_routerparam' => [] ]);
})->name("feman");

使用

  • AbsFEApiParamMan接口子类,所有接口子类格式大致如下:
<?php

namespace App;

use KLib\FEApiLaravel\AbsFEApiParamMan;
use KLib\FEApiLaravel\IHaveErr;

class CFEExamApi extends AbsFEApiParamMan implements IHaveErr
{

    /**
     * 进行API 定义
     * $this->createApi('apiname', 'refname', 'Describe.')->setParamDefine(['key1' => ['info1' => 'desc1', 'value1' => 'default value' ], 'key2' => ['info1' => 'desc1', 'value1' => null ] ]);
     * @return AbsFEApiParamMan
     */
    public function apiDefine()
    {
        $param_arr = [];
        $param_arr['a'] = ['info' => 'desc1', 'value' => 0 ];
        $param_arr['b'] = ['info' => 'desc2', 'value' => 0 ];

        $this->createApi('tryname', 'realname', '这只是一个测试用的API.')
            ->setLimitMethod(['GET', 'POST'])
            ->setParamDefine($param_arr);

    }

    /**
     * 设置文档登录的密码
     * @return string
    */
    public function getPasswordOfMan()
    {
        return 'abc123';
    }

    /**
     * 定义手册信息
     * @return AbsFEApiParamMan
    */
    public function manDefine() {
        parent::manDefine();
        $this->getApiDefineObj('tryname')->setSampleResult($this->realname([5,6]))->setResultdesc('这只是一个测试');
    }

    /**
     * 这是一个测试用的Api接口
     * @param $param_arr API参数数组
     * @return mixed
     */
    public function realname($param_arr) {
        return $param_arr;
    }
}