real-apidoc基于 tp6 的 api 生成模块

联合创作 · 2023-09-19 05:11



基于 tp6 的 api 生成模块,参考 fastadmin 的 api 模块


引用


下载到 tp6 的extend\jmwl下




use  jmwl\realapidoc\Builder;
use think\facade\View;



使用


这里是所有的需要生成api的控制器路径啦、所以,你可以先获取到模块下的所有控制器 Builder(["\app\admin\controller\Demo","\app\admin\controller\Index"])




  $title="类名";
$url="http://real-think.jmwl51.com";
$lang=[
'Info' => '基础信息',
'Sandbox' => '在线测试',
'Sampleoutput' => '返回示例',
'Headers' => 'Headers',
'Parameters' => '参数',
'Body' => '正文',
'Name' => '名称',
'Type' => '类型',
'Required' => '必选',
'Description' => '描述',
'Send' => '提交',
'Reset' => '重置',
'Tokentips' => 'Token在会员注册或登录后都会返回,WEB端同时存在于Cookie中',
'Apiurltips' => 'API接口URL',
'Savetips' => '点击保存后Token和Api url都将保存在本地Localstorage中',
'Authorization' => '权限',
'NeedLogin' => '登录',
'NeedRight' => '鉴权',
'ReturnHeaders' => '响应头',
'ReturnParameters' => '返回参数',
'Response' => '响应输出',
];
$config = [
'sitename' => "测试",
'title' => $title,
'author' => "测试",
'description' => '',
'apiurl' => $url,
'language' => $lang,
];
//这里是所有的需要生成api的控制器路径啦
$builder = new Builder(["\\app\\admin\\controller\\Demo","\\app\\admin\\controller\\Index"]);
$content = $builder->render(root_path()."/extend/jmwl/realapidoc/template/index.html", ['config' => $config, 'lang' => $lang]);
// dump($content); die;

View::assign('config',$config);
View::assign('docslist',$content["docsList"]);
View::assign('lang',$content["lang"]);
return View();



视图


文件中的index.html就是视图啦,放到正确的位置 我放在了 app\admin\view\api\index.html 对应的控制器自然是 admin下的api控制器啦


控制器注释
































名称 描述 示例
@ApiSector API分组名称 (测试分组)
@ApiRoute API接口URL,此@ApiRoute只是基础URL (/api/test)
@ApiInternal 忽略的控制器,表示此控制将不加入API文档
@ApiWeigh API方法的排序,值越大越靠前 (99)

控制器方法注释








































































名称 描述 示例
@ApiTitle API接口的标题,为空时将自动匹配注释的文本信息 (测试标题)
@ApiSummary API接口描述 (测试描述)
@ApiRoute API接口地址,为空时将自动计算请求地址 (/api/test/index)
@ApiMethod API接口请求方法,默认为GET (POST)
@ApiSector API分组,默认按钮控制器或控制器的@ApiSector进行分组 (测试分组)
@ApiParams API请求参数,如果在@ApiRoute中有对应的{@参数名},将进行替换 (name="id", type="integer", required=true, description="会员ID")
@ApiHeaders API请求传递的Headers信息 (name=token, type=string, required=true, description="请求的Token")
@ApiReturn API返回的结果示例 ({"code":1,"msg":"返回成功"})
@ApiReturnParams API返回的结果参数介绍 (name="code", type="integer", required=true, sample="0")
@ApiReturnHeaders API返回的Headers信息 (name="token", type="integer", required=true, sample="123456")
@ApiInternal 忽略的方法,表示此方法将不加入文档
@ApiWeigh API方法的排序,值越大越靠前 (99)

示范




<?php

namespace app\api\controller;

/**
* 测试API控制器
*/
class Test extends \app\common\controller\Api
{

// 无需验证登录的方法
protected $noNeedLogin = ['test'];
// 无需要判断权限规则的方法
protected $noNeedRight = ['*'];

/**
* 首页
*
* 可以通过@ApiInternal忽略请求的方法
* @ApiInternal
*/
public function index()
{
return 'index';
}

/**
* 私有方法
* 私有的方法将不会出现在文档列表
*/
private function privatetest()
{
return 'private';
}

/**
* 测试方法
*
* @ApiTitle (测试名称)
* @ApiSummary (测试描述信息)
* @ApiSector (测试分组)
* @ApiMethod (POST)
* @ApiRoute (/api/test/test/id/{id}/name/{name})
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiParams (name="id", type="integer", required=true, description="会员ID")
* @ApiParams (name="name", type="string", required=true, description="用户名")
* @ApiParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
* @ApiReturnParams (name="code", type="integer", required=true, sample="0")
* @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
* @ApiReturnParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
* @ApiReturn ({
'code':'1',
'mesg':'返回成功'
* })
*/
public function test($id = '', $name = '')
{
$this->success("返回成功", $this->request->request());
}

}




浏览 29
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报