klib / jk-laravel-feapi
一个简单的支持RESTful接口的前后端组件模块,从JKGlib框架下移植到Laravel框架
v7.2.3
2021-03-03 02:37 UTC
Requires
- php: >=7.0.0
- laravel/framework: 5.5.*
Requires (Dev)
- filp/whoops: ~2.0
- fzaninotto/faker: ~1.4
- mockery/mockery: ~1.0
- phpunit/phpunit: ~6.0
- symfony/thanks: ^1.0
This package is auto-updated.
Last update: 2025-03-29 00:50:41 UTC
README
- 一个简单的支持RESTful接口的前后端组件模块,从JKGlib框架下移植到Laravel框架。
- 支持一个简单的自动在线API接口文档,方便前后端开发人员进行对接。
- 该组件7.x版本支持Laravel5.5.* 版本
版本doc
- v7.2.3 版本,修正 7.2.2 版本的man.blade.php view 的一些问题
- v7.2.2 版本,修正 7.2.0 版本的man.blade.php view 的一些问题
- 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;
}
}