codebot/laravel-response-builder

为Laravel框架提供的简单包,用于标准化JSON响应的结构。

1.1.5 2023-04-11 08:36 UTC

README

codebot/laravel-response-builder是一个用于Laravel框架的简单包,用于标准化JSON响应的结构。

如果你需要响应看起来像这样,那么这个包会对你很有帮助

{
  "status": true,
  "message": "You got that!",
  "data" : {
    "name": "James Joesph Bulger", 
    "profession": "criminal"
  },
  "errors": []
}

或者

{
  "status": false,
  "message": "Something went wrong...",
  "data" : [],
  "errors": {
    "email": [
      "The email field is required."
    ]
  }
}

安装

composer require codebot/laravel-response-builder:^1

对于Laravel 5.4及以下版本,在config/app.php文件中将\Rb\Core\RbServiceProvider::class添加到providers中。

接下来在你的控制台运行以下命令

php artisan vendor:publish --tag=laravel-response-builder

请求

一旦发布了vendor,你应该能看到App\Http\Requests\Rb\RbRequest class。这将是laravel-response-builder请求的基类。
要生成一个扩展RbRequest的请求,运行

php artisan make:rbrequest YourNewRequest

如果你使用Laravel的Validator类,可以使用Rb\Core\RbValidator来标准化失败的响应结构。

use \Rb\Core\RbValidator;
use Illuminate\Support\Facades\Validator;

$validator = new Validator($data, $rules); // assuming you have a $validator instance

RbValidator::validate($validator); // throws HttpResponseException or returns boolean true 

RbValidator::validate()方法检查验证是否失败,并抛出带有标准化JSON响应结构的Illuminate\Http\Exceptions\HttpResponseException。

用法

use \Rb\Core\Response;
use \Rb\Core\HttpStatusCode;

$response = new Response();

$response->setStatusCode(HttpStatusCode::OK); // required. If code is 2XX then Response::status field will be "true", otherwise "false"

$response->setMessage('Some inspiring message.'); // null will be returned if no message set

$response->setData($data); // null will be returned if no data set

$response->setErrors($errors); // null will be returned if no error set

$response->getArray(); // will return an array of data set

$response->getResponse(); // will return a json response using Laravel's response() helper 

所有设置器都是流畅的,所以上面的例子可以写成

use \Rb\Core\Response;
use \Rb\Core\HttpStatusCode;

$response = new Response();

$response->setStatusCode(HttpStatusCode::OK)
    ->setMessage('Some inspiring message.'); 
    // ...

包包含HttpStatusCode类,其中定义了HTTP状态码。

use \Rb\Core\HttpStatusCode;

HttpStatusCode::OK; // returns status code 200 (integer)

HttpStatusCode::getMessageByCode(HttpStatusCode::NOT_FOUND); // returns string "Not Found"

HttpStatusCode::getCodeWithMessage(HttpStatusCode::CREATED); // returns string - code and message, e.g. "201 Created"

外观

如果不想与所有这些设置器交互,包包含一个外观类。

use \Rb\Facade\Response;
use \Rb\Core\HttpStatusCode;

return Response::success(
   data: $data,
   message: 'Created List of users.'
);

return Response::error(
   errors: $errors,
   message: 'Invalid input.',
   statusCode: HttpStatusCode::UNPROCESSABLE_ENTITY
);

// Without $data (the $errors parameter is also optional)
return Response::success(message: 'User deleted.');

$data$errors变量是数组,是可选的。

配置

一旦发布了vendor,你应该能看到config/response_builder.php文件。

request_path - 生成请求类将存储在指定的目录中。

request_namespace - 生成请求类的命名空间。

is_authorize - Request的authorize()方法的默认值。

messages - 包含Response的"message"字段的提示信息。

messages.failed_validation - 验证失败响应的默认信息。

字段

status - 布尔型(不可为空)
status_code - 整数(不可为空)
message - 字符串(可为空)
data - 数组(不可为空,可以为空数组)
errors - 数组(不可为空,可以为空数组)