briedis / api-builder
此包的最新版本(v1.5.0)没有可用的许可证信息。
v1.5.0
2022-08-04 11:23 UTC
Requires
- php: >=7.1
- illuminate/support: ^5.0|^6.0|^7.0|^8.0|^9.0
- mockery/mockery: ~1.0
Requires (Dev)
- phpunit/phpunit: ~6.0|~8.5.12
README
库帮助您构建API的文档,您甚至可以使用它来验证请求参数
用法
Laravel 4
- 添加composer依赖
"briedis/api-builder": "~1.0"
并运行composer update
- 添加服务提供者
Briedis\ApiBuilder\ApiBuilderLaravel4ServiceProvider
- 发布资源到公开目录:
php artisan asset:publish briedis/api-builder
Laravel 5
- 添加composer依赖
"briedis/api-builder": "~1.0"
并运行composer update
- 添加服务提供者
Briedis\ApiBuilder\ApiBuilderLaravel5ServiceProvider
- 将资源发布到公开目录:
php artisan vendor:publish --force --provider="Briedis\ApiBuilder\ApiBuilderLaravel5ServiceProvider"
(强制表示将覆盖现有文件)
请求类
use Briedis\ApiBuilder\Method; use Briedis\ApiBuilder\StructureBuilder; class ExampleGetUserRequest extends Method{ const URI = 'user/get'; const METHOD = 'GET'; public $title = 'User information'; public $description = 'Get user by given ids. One or multiple users can be fetched at once'; public function getRequest(){ return new GetUsersStructure; } public function getResponse(){ return (new StructureBuilder) ->struct('users', new UserStructure, 'Array with user objects')->multiple(); } }
结构类
use Briedis\ApiBuilder\StructureBuilder; use Briedis\ApiBuilder\StructureInterface; class GetUsersStructure implements StructureInterface { /** * Get the structure object * @return \Briedis\ApiBuilder\StructureBuilder */ public function getStructure(){ return (new StructureBuilder) ->int('userId', 'Array of user ids you want to fetch')->multiple() ->int('offset', 'For paging purposes')->optional() ->int('count', 'Amount of users to fetch. Defaults to 20')->optional(); } } class UserStructure implements StructureInterface{ /** * Get User structure object * @return StructureBuilder */ public function getStructure(){ return (new StructureBuilder('User')) ->int('id', 'Unique identifier') ->str('username', 'Nickname that will be used in the system') ->str('firstName', 'Users first name') ->str('lastName', 'Users last name') ->str('gender', 'M - male, F - female')->values(['M', 'F'])->optional() ->int('signature', 'Provide your favorite quote or something, if you want')->optional() ->struct('location', new LocationStructure, 'Location object for the user')->optional() ->int('createdAt', 'Unix timestamp, when user has registered'); } }
输出
$presenter = new \Briedis\ApiBuilder\Presenter([ new ExampleGetUserRequest, // Add request class instances as needed ]); $presenter->setDomain('http://example/api/v1')); echo $presenter->render();
待办事项
- 自动路由生成