zerkxubas / api-response-laravel
此包可以用于在Laravel API项目中结构化API响应,简单易用。
Requires
- php: ^8.2
- laravel/framework: ^11.0
Requires (Dev)
- phpunit/phpunit: ^11.2
README
此包为Laravel应用程序中的API响应提供了一种结构化的处理方式。它包括预定义的状态码和一个中间件来强制执行JSON请求。
注意 适用于 Laravel v11+
安装
您可以通过composer安装此包
composer require zerkxubas/api-response-laravel
发布配置
要发布配置文件,请运行以下命令
php artisan vendor:publish --tag="apiresponse"
这将创建一个config/apiresponse.php文件在您的项目中,您可以在其中自定义包的设置。
用法
状态码
该包包含一组预定义的状态码,可以通过常量访问
use Zerkxubas\ApiResponseLaravel\StatusCode; $status = StatusCode::OK;
中间件
该包提供了一个中间件,以确保所有API请求都期望JSON响应。要使用它,请将其注册到您的bootstrap/app.php文件中。
// use this namespace. use Zerkxubas\ApiResponseLaravel\Http\Middleware\RequiresJsonMiddleware; // Add this line inside ->withMiddleware(){} $middleware->api()->append(RequiresJsonMiddleware::class);
使用ApiResponseController
要使用此包提供的ApiResponseController
,您可以在自己的控制器中扩展它。这将允许您使用标准化的API响应方法。
use Zerkxubas\ApiResponseLaravel\Http\Controllers\ApiResponseController; class MyCustomController extends ApiResponseController { // send response return $this->sendResponse($data, $message, $code) // send errorResponse return $this->sendError($error, $errorMessages, $code); }
更多示例 SendResponse
// Example of sending a success response $data = ['key' => 'value']; return $this->sendResponse('Data retrieved successfully.', $data, 200); // Or return $this->sendResponse('Data retrieved successfully.', $data, StatusCode::OK);
更多示例 SendErrorResponse
// Example of sending an error response $errorMessages = [ 'error_detail' => 'Customized errors in bulk.' ]; return $this->sendError('File not found.', $errorMessages, 404); // Or return $this->sendError('File not found.', $errorMessages, StatusCode::NOT_FOUND);
当前支持的状态码及用法
-
200
StatusCode::OK
-
201
StatusCode::CREATED
-
202
StatusCode::ACCEPTED
-
400
StatusCode::BAD_REQUEST
-
401
StatusCode::UNAUTHORIZED
-
403
StatusCode::FORBIDDEN
-
404
StatusCode::NOT_FOUND
-
500
StatusCode::SERVER_ERROR
自定义API响应实现
您可以通过在config/apiresponse.php配置文件中指定自己的ApiResponseInterface
实现来自定义API响应结构。
首先,创建一个实现ApiResponseInterface
的自定义类
<?php namespace App\Services; use Zerkxubas\ApiResponseLaravel\Contracts\ApiResponseInterface; class CustomApiResponse implements ApiResponseInterface { public function sendResponse($message, $data = [], $code = 200) { // Your custom response structure } public function sendError($message, $data = [], $code = 400) { // Your custom error structure } }
然后,更新config/apiresponse.php文件以使用您的自定义类
return [ 'implementation' => App\Services\CustomApiResponse::class, ];
许可证
- 开源,免费使用和分发。