mhapach/swaggermodelgenerator

Laravel 的 Swagger 模型生成器

0.0.32 2024-09-16 15:27 UTC

README

Latest Version on Packagist Total Downloads Build Status StyleCI

此库根据 Swagger 规范生成模型和服务方法。当前版本支持 OpenAPI 2.0(又称 OAS)和 OpenApi 3.0

安装

步骤 1. 通过 Composer 将 Eloquent 模型生成器添加到您的项目中

$ composer require mhapach/swaggermodelgenerator

步骤 2. 在 config/app.php 中注册 SwaggerModelGeneratorServiceProvider

'providers' => [
    //...
    \mhapach\SwaggerModelGenerator\SwaggerModelGeneratorServiceProvider::class,
]

用法

模型和服务生成

$serviceScheme = "http://your-service.com/scheme";
$modelsNamespace = 'App\Services\Models';
$serviceNamespace = 'App\Services';
$modelsPath = "/your-project/app/Services/Models";
$servicePath = "/your-project/app/Services";

/** @var Swagger $converterInstance */
$converterInstance = (new SwaggerModelGenerator($serviceScheme, true))->getConverterInstance($modelsNamespace, $serviceNamespace);
$converterInstance->genModels($modelsPath);        
$converterInstance->genService($servicePath);

生成的服务和模型使用示例。示例 1

$serviceAddress = "http://your-service.com/some-name";
$service = new Service($serviceAddress);
$bc = $service->benefitCategoriesUsingGET([
    'path' => ['id' => 1122],
    'query' => ['some-param' => 1],
]);   

生成的服务和模型使用示例。示例 2

$serviceAddress = "http://your-service.com/some-name";
$token = 'daksdlka shdlkjahslkdj h==';
$headers = [
    'Accept' => '*/*',
    'Content-Type' => 'application/x-www-form-urlencoded',
    'Cache-Control' => 'no-cache',
    "Authorization" => "Bearer {$token}"
];
$service = new Service($serviceAddress, $headers);
$bc = $service->benefitCategoriesUsingGET([
    'query' => ['some-param' => 1],
    'body' => '{"param1":100, "param2":200}'
]);

启用调试日志。示例 3

$serviceAddress = "http://your-service.com/some-name";
$config = config('logging.channels.'.config('logging.default'));
$config['path'] = storage_path("logs/rest.log"); // optional
$logger = \Log::build($config);
$service = new Service($serviceAddress, ['Content-Type' => 'application/json'], $logger);
//Enabling log    
$service->enableLog();
// call service method        
$bc = $service->benefitCategoriesUsingGET([
    'query' => ['some-param' => 1],
    'body' => '{"param1":100, "param2":200}'
]);   

变更日志

请参阅 变更日志 了解最近的变化。

测试

$ composer test

贡献

请参阅 contributing.md 了解详情和待办事项清单。

安全性

如果您发现任何安全相关的问题,请通过作者电子邮件联系,而不是使用问题跟踪器。

鸣谢

许可协议

许可协议。请参阅 许可文件 了解更多信息。