PHP code example of wangzd / laravel-apidoc-generator
1. Go to this page and download the library: Download wangzd/laravel-apidoc-generator library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
wangzd / laravel-apidoc-generator example snippets
namespace Mpociot\ApiDoc\Request;
use Illuminate\Foundation\Http\FormRequest;
/**
*
*
* Class BaseRequest
*
* describe:
*
* ===========================================
* Copyright 2020/9/28 2:25 下午 [email protected]
*
* @resource BaseRequest
* @license MIT
* @package Mpociot\ApiDoc\Request
* @author Mz
*/
abstract class BaseRequest extends FormRequest implements RequestInterface
{
}
namespace Mpociot\ApiDoc\Request;
interface RequestInterface
{
/**
* 路由验证规则
* tips: 生成文档时
public function headerRules(): array;
/**
*
* getSwaggerContentType
* 默认值:application/json
*
* @return string
*/
public function getSwaggerContentType(): string;
}
public function rules()
{
return [
'file' => '
namespace App\Http\Controllers\Admin\Requests;
use SalesTenant\Commons\Requests\Request;
/**
*
*
* Class UserIndexRequest
*
* describe:用户管理列表的验证码类
*
* ===========================================
* Copyright 2020/9/27 4:11 下午 [email protected]
*
* @resource UserIndexRequest
* @license MIT
* @package App\Http\Controllers\Admin\Requests
* @author Mz
*/
class UserIndexRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* 获取已定义验证规则的错误消息。
*
* @return array
*/
public function messages()
{
return [
'regex' => ':attribute格式不正确.',
'string' => ':attribute为字符串.',
'integer' => ':attribute为数字,',
'in' => ':attribute只能是:values其中之一.',
];
}
/**
*
* attributes
*
* @return array
*/
public function attributes()
{
return [
'keyword' => '关键字',
'name' => '用户姓名',
'mobile' => '手机',
'email' => '邮箱',
'is_admin' => '搜索管理员'
];
}
/**
* 请求体验证规则
* @return array
*/
public function rules(): array
{
return [
'keyword' => 'sometimes|regex:/^[0-9]+$/|describe:搜索:姓名、邮箱、手机等字段.',
'name' => 'sometimes|describe:搜索姓名',
'mobile' => 'sometimes|describe:搜索手机',
'email' => 'sometimes|describe:搜索邮箱',
'is_admin' => 'sometimes|integer|in:0,1|describe:搜索是否是管理员',
];
}
/**
* 路由验证规则
* tips: 生成文档时
namespace App\Transformers\Admin\Log;
use Mpociot\ApiDoc\Transformer\BaseTransformer;
/**
*
*
* Class IndexTransformer
*
* describe:
*
* ===========================================
* Copyright 2020/9/27 3:21 下午 [email protected]
*
* @resource IndexTransformer
* @license MIT
* @package App\Transformers\Admin\Log
* @author Mz
*/
class IndexTransformer extends BaseTransformer
{
/**
* 该转换器中字段可能涉及到的表
* 如果为空,则会取整个库
* @var array
*/
protected $tables = [];
/**
* 自定义字段注释
* 当然你也可以通过 config('apidoc.columnComments') 去设置一些通用的字段注释
* 优先级为:1:配置config('apidoc.columnComments');2:属性$columnComments;3:$tables设置的表字段注释;4:整个库
* @var array
*/
protected $columnComments = [];
/**
*
* response
*
* describe:
*
* @return mixed
*/
public function response()
{
$res = <<<RES
{"totalPages":147,"totalCount":1462,"page":1,"limit":10,"count":10,"firstPage":true,"lastPage":false,"hasPrePage":false,"hasNextPage":true,"prePage":0,"nextPage":2,"items":[{"id":77392,"user_id":"0","operator":"\u7ba1\u7406\u5458","url":"\/api\/sales\/tenant\/shop\/config","method":"POST","request_data":"{\"shop_tenant_id\":\"98\",\"shop_config\":{\"hash_key\":\"kjN3S3r7yahJZ6wna7DRXZj48RTBXjDF2\"}}","md5":"31c51ede3ddb7fcc924075207e99d7f4","created_at":"2020-09-10 16:27:29","updated_at":"2020-09-10 16:27:29","deleted_at":null},{"id":77391,"user_id":"0","operator":"\u7ba1\u7406\u5458","url":"\/api\/sales\/tenant\/shop","method":"POST","request_data":"{\"source\":\"LWJ_SHOP\",\"name\":\"ddd\",\"tenant_code\":\"TEST08\"}","md5":"f9ff4d0215029eb40eae00224b3e8d09","created_at":"2020-09-10 16:27:21","updated_at":"2020-09-10 16:27:21","deleted_at":null},{"id":77390,"user_id":"0","operator":"\u7ba1\u7406\u5458","url":"\/api\/permission\/bindMenus","method":"PUT","request_data":"{\"id\":1,\"menuIds\":[]}","md5":"5c383d10b3f73a2da30603f584b72497","created_at":"2020-09-08 14:49:14","updated_at":"2020-09-08 14:49:14","deleted_at":null},{"id":77389,"user_id":"0","operator":"\u7ba1\u7406\u5458","url":"\/api\/sales\/user","method":"POST","request_data":"{\"mobile\":\"15982476445\"}","md5":"36e3471db1127c6d8c2b4b06a3b9a9f6","created_at":"2020-09-08 14:49:08","updated_at":"2020-09-08 14:49:08","deleted_at":null},{"id":77388,"user_id":"0","operator":"\u7ba1\u7406\u5458","url":"\/api\/sales\/user\/superAdmin","method":"POST","request_data":"{\"id\":\"e6b1934bddf84733bf1bb417b976105c\",\"is_admin\":0}","md5":"f0297ef6039e9a22aab17a86c9a4d1fa","created_at":"2020-09-08 14:49:05","updated_at":"2020-09-08 14:49:05","deleted_at":null},{"id":77387,"user_id":"0","operator":"\u7ba1\u7406\u5458","url":"\/api\/sales\/config","method":"PUT","request_data":"{\"sales_domain\":\"https:\/\/admin-sales-staging.liweijia.com:28043\",\"sales_oauth_client_id\":\"7aa8ca910e4e4726bb2afbeda283bdd1\",\"sales_oauth_client_secret\":\"ML8PQYRO\",\"sales_oauth_scope\":\"trust\",\"sales_sync\":\"1\",\"recipients\":\"[email protected] |[email protected] |[email protected] |[email protected] \",\"auto_retry_num\":\"5\"}","md5":"cd218015991a981232778df7d0c73688","created_at":"2020-09-08 14:48:46","updated_at":"2020-09-08 14:48:46","deleted_at":null},{"id":77386,"user_id":"0","operator":"\u7ba1\u7406\u5458","url":"\/api\/sales\/tenant\/import\/order","method":"POST","request_data":"{\"limit\":10,\"page\":1,\"tenant_code\":\"DSFPTCLOUD\",\"tenant_id\":123,\"sales_user_id\":\"ganwang0001\",\"mobile\":\"15777779003\",\"store_code\":\"AA0BBB76\",\"file\":\"\/upload\/templates\/1a5bed584172272a6438cecb49d4f20e.xlsx\",\"pwd\":\"UDlaV2FFUTlvcllWS0ZTWGs1TzQ5dz09\"}","md5":"cdd32781477204750eced9f3d43cfa93","created_at":"2020-09-08 14:48:30","updated_at":"2020-09-08 14:48:30","deleted_at":null},{"id":77385,"user_id":"0","operator":"\u7ba1\u7406\u5458","url":"\/api\/sales\/tenant\/import\/order","method":"POST","request_data":"{\"limit\":10,\"page\":1,\"tenant_code\":\"DSFPTCLOUD\",\"tenant_id\":123,\"sales_user_id\":\"ganwang0001\",\"mobile\":\"15777779003\",\"store_code\":\"AA0BBB76\",\"file\":\"\/upload\/templates\/1a5bed584172272a6438cecb49d4f20e.xlsx\",\"pwd\":\"UDlaV2FFUTlvcllWS0ZTWGs1TzQ5dz09\"}","md5":"cdd32781477204750eced9f3d43cfa93","created_at":"2020-09-08 14:47:26","updated_at":"2020-09-08 14:47:26","deleted_at":null},{"id":77384,"user_id":"0","operator":"\u7ba1\u7406\u5458","url":"\/api\/sales\/attachment\/excel","method":"POST","request_data":"{\"rename\":\"1\",\"type\":\"local\",\"folder\":\"templates\",\"file\":{}}","md5":"c6f4002c95f062961198cab600c3e861","created_at":"2020-09-08 14:47:24","updated_at":"2020-09-08 14:47:24","deleted_at":null},{"id":77383,"user_id":"0","operator":"\u7ba1\u7406\u5458","url":"\/api\/sales\/tenant\/import\/order","method":"POST","request_data":"{\"limit\":10,\"page\":1,\"tenant_code\":\"TEST06_710\",\"tenant_id\":184,\"sales_user_id\":\"ganwang0001\",\"mobile\":\"13800008989\",\"store_code\":\"HTQXL01\",\"file\":\"\/upload\/templates\/1a5bed584172272a6438cecb49d4f20e.xlsx\",\"pwd\":\"UDlaV2FFUTlvcllWS0ZTWGs1TzQ5dz09\"}","md5":"6dfde587d7b12ee5db01885a691f3a08","created_at":"2020-09-08 14:46:58","updated_at":"2020-09-08 14:46:58","deleted_at":null}]}
RES;
return json_decode($res);
}
}
Mpociot\ApiDoc\ApiDocGeneratorServiceProvider::class,
// API Group Routes
Route::group(array('prefix' => 'api/v1', 'middleware' => []), function () {
// Custom route added to standard Resource
Route::get('example/foo', 'ExampleController@foo');
// Standard Resource route
Route::resource('example', 'ExampleController');
});
/**
* @resource Example
*
* Longer description
*/
class ExampleController extends Controller {
/**
* This is the short description [and should be unique as anchor tags link to this in navigation menu]
*
* This can be an optional longer description of your API call, used within the documentation.
*
*/
public function foo(){
}
public function rules()
{
return [
'title' => 'r',
'thumbnail' => '
/**
* @transformer \Mpociot\ApiDoc\Tests\Fixtures\TestTransformer
*/
public function transformerTag()
{
return '';
}
/**
* @transformercollection \Mpociot\ApiDoc\Tests\Fixtures\TestTransformer
*/
public function transformerCollectionTag()
{
return '';
}
/**
* @response {
* data: [],
*}
*/
public function responseTag()
{
return '';
}
'url' => env('APP_URL', 'http://yourappdefault.app'),
/**
*
* 后台日志列表
*
* describe:后台日志管理列表
*
* @responseTransformer App\Transformers\Admin\Log\IndexTransformer
*
* @param LogIndexRequest $request
* @return \Illuminate\Http\JsonResponse
* @throws \Exception
*/
public function index(LogIndexRequest $request)
{
$this->getRouteParam($request);
$data = app(AdminOperate::class)->search($request->all(),
[$this->routeParam['sort'] => $this->routeParam['order']],
$this->routeParam['page'],
$this->routeParam['limit']);
return $this->paginate($data);
}
sh
$ php artisan api:generate --routePrefix="api/v1/*"
sh
$ php artisan vendor:publish
sh
$ php artisan api:generate --routePrefix="api/*" --actAsUserId=1
sh
$ php artisan api:generate --routePrefix="api/*" --noResponseCalls