jobins / api-generator
在编写测试用例的同时生成API文档(Laravel)。
v0.0.9
2022-10-19 03:53 UTC
Requires
- php: ^7.4|^8.0|^8.1
- ext-json: *
Requires (Dev)
- orchestra/testbench: ^6.15
- phpunit/phpunit: ^9.0
- vimeo/psalm: ^4.7
README
在编写测试用例的同时生成API文档(Laravel)。
想法
它在Laravel应用中编写测试用例的同时,使用OpenAPI规范生成API文档。生成的文档可以在swagger ui上预览,或者集成laravel-swagger-ui到应用中,或者在线使用Swagger Editor。
功能
- 所有基本设置功能,与swagger api中提供的一致。
- 请求体将使用Laravel FormRequest类定义。
- 请求体示例将从测试中使用的测试数据中获取。
- 路由参数将从Laravel路由中定义。
- 响应示例将从测试响应中获取。
安装
composer require jobins/api-generator --dev
发布资产
php artisan vendor:publish --provider="Jobins\APIGenerator\APIGeneratorServiceProvider"
基本用法
<?php namespace Tests\Feature; use App\Http\Requests\RegistrationRequest; use JoBins\APIGenerator\Security\Bearer; use JoBins\APIGenerator\Traits\HasDocsGenerator; class RegistrationTest extends TestCase { use HasDocsGenerator; /** @test */ public function it_register_a_new_user() { $responseSchema = [ "description" => "A User Object", "define" => [ "data.*" => ["refSchema" => "UserSchema"], "message" => "Message for user", ], ]; $this->setSummary("Register a new user.") ->setId("Register") ->setSecurity([Bearer::class]) ->setTags(["Posts"]) ->setRulesFromFormRequest(RegistrationRequest::class) ->defineResponseSchema($responseSchema) ->jsond("post", route("registration.store"), $data) ->assertStatus(422) ->assertJsonFragment([]) ->assertJsonStructure(["message"]) ->generate($this, true); } }
在FormRequest类的描述方法中定义参数。
/** * Class ExampleFormRequest * @package JoBins\APIGenerator\Tests\Stubs */ class ExampleFormRequest extends FormRequest { public function rules() { return [ "email" => "required", // Required, String, "nickname" => "sometimes|required", // Optional Field, String ]; } public function descriptions() { return [ "email" => "Email of a new user.", "nickname" => "Nick name of a new user." ]; } }