briedis/api-builder

此包的最新版本(v1.5.0)没有可用的许可证信息。

v1.5.0 2022-08-04 11:23 UTC

This package is auto-updated.

Last update: 2024-09-04 16:01:12 UTC


README

Build passes? Latest Stable Version Latest Unstable Version Master

库帮助您构建API的文档,您甚至可以使用它来验证请求参数

用法

Laravel 4

  1. 添加composer依赖 "briedis/api-builder": "~1.0" 并运行 composer update
  2. 添加服务提供者 Briedis\ApiBuilder\ApiBuilderLaravel4ServiceProvider
  3. 发布资源到公开目录: php artisan asset:publish briedis/api-builder

Laravel 5

  1. 添加composer依赖 "briedis/api-builder": "~1.0" 并运行 composer update
  2. 添加服务提供者 Briedis\ApiBuilder\ApiBuilderLaravel5ServiceProvider
  3. 将资源发布到公开目录: 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();

待办事项

  • 自动路由生成