mhasnainjafri/apitoolkit

此包已被弃用且不再维护。未建议替代包。

APIToolkit是一个为Laravel设计的综合性包,旨在通过提供一致的响应、高效的分页、强大的缓存机制和标准化的字段定义以及适当的HTTP状态码,简化API开发过程并确保一致性。

v0.1.1 2024-06-18 09:10 UTC

This package is auto-updated.

Last update: 2024-09-24 07:07:09 UTC


README

APITOOLKIT是Laravel的综合性包,提供强大的工具用于构建查询、处理API响应和高效管理缓存。

安装

您可以通过composer安装此包

composer require mhasnainjafri/apitoolkit

功能

APITOOLKIT提供多种功能,用于高效构建和处理API响应

  • 查询构建:使用过滤器、排序、包含等构建查询。
  • API响应助手:标准化API响应。
  • 缓存:为指定时间段缓存API响应。
  • 自定义响应:提供成功、错误、验证以及其他类型响应的标准方法。

使用

查询构建

APITOOLKIT可以帮助您轻松构建复杂查询。

use Mhasnainjafri\APIToolkit\QueryBuilder\QueryBuilder;

// Example usage
$users = QueryBuilder::for(User::class)
    ->allowedFilters(['name', 'email'])
    ->allowedSorts(['name', 'created_at'])
    ->paginate();

API响应

APITOOLKIT提供各种方法来高效处理API响应。

成功响应

use Mhasnainjafri\APIToolkit\API;

return API::success($data, 'Data retrieved successfully');

错误响应

use Mhasnainjafri\APIToolkit\API;

return API::error('An error occurred', 500);

验证错误响应

use Mhasnainjafri\APIToolkit\API;

$errors = ['email' => 'The email field is required.'];
return API::validationError($errors);

未找到响应

use Mhasnainjafri\APIToolkit\API;

return API::notFound('User not found');

缓存

您可以将响应缓存起来以提高性能并减少对数据库的负载。

缓存响应

use Mhasnainjafri\APIToolkit\API;
use App\Models\User;

$resource = User::query();
$cacheKey = 'users_list';

return API::cachedResponse($resource, $cacheKey);

分页缓存响应

use Mhasnainjafri\APIToolkit\API;
use App\Models\User;

$resource = User::query();
$pageNumber = 1;

return API::paginatedCachedResponse($resource, $pageNumber);

清除缓存

use Mhasnainjafri\APIToolkit\API;

$cacheKey = 'users_list';
API::clearCacheKey($cacheKey);

自定义响应

您也可以根据需要创建自定义响应。

use Mhasnainjafri\APIToolkit\API;

$data = ['key' => 'value'];
return API::custom($data, 'Custom response message');

常量

APITOOLKIT提供各种HTTP状态码作为常量,以便于使用

  • API::SUCCESS: 200
  • API::CREATED: 201
  • API::NO_CONTENT: 204
  • API::BAD_REQUEST: 400
  • API::UNAUTHORIZED: 401
  • API::FORBIDDEN: 403
  • API::NOT_FOUND: 404
  • API::METHOD_NOT_ALLOWED: 405
  • API::UNPROCESSABLE_ENTITY: 422
  • API::INTERNAL_SERVER_ERROR: 500
  • API::NOT_IMPLEMENTED: 501
  • API::BAD_GATEWAY: 502
  • API::SERVICE_UNAVAILABLE: 503

贡献

欢迎贡献!请随时提交pull request或在GitHub上创建问题。

许可证

此包是开源软件,受MIT许可证许可。