zerkxubas/api-response-laravel

此包可以用于在Laravel API项目中结构化API响应,简单易用。

v1.0.1 2024-06-26 10:39 UTC

This package is auto-updated.

Last update: 2024-09-26 11:13:02 UTC


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,
];

许可证

  • 开源,免费使用和分发。

作者

@zerkxubas