PHP code example of jiannei / laravel-response
1. Go to this page and download the library: Download jiannei/laravel-response library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jiannei / laravel-response example snippets
// app/Exceptions/Handler.php
// 引入以后对于 API 请求产生的异常都会进行格式化数据返回
// 要求请求头 header 中包含 /json 或 +json,如:Accept:application/json
// 或者是 ajax 请求,header 中包含 X-Requested-With:XMLHttpRequest;
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
use Jiannei\Response\Laravel\Support\Traits\ExceptionTrait;
class Handler extends ExceptionHandler
{
use ExceptionTrait;
// ...
}
// bootstrap/app.php
$app->configure('response');
$app->register(\Jiannei\Response\Laravel\Providers\LumenServiceProvider::class);
public function index()
{
$users = User::all();
return Response::success(new UserCollection($users));
}
public function paginate()
{
$users = User::paginate(5);
return Response::success(new UserCollection($users));
}
public function simplePaginate()
{
$users = User::simplePaginate(5);
return Response::success(new UserCollection($users));
}
public function item()
{
$user = User::first();
return Response::success(new UserResource($user));
}
public function array()
{
return Response::success([
'name' => 'Jiannel',
'email' => '[email protected] '
],'', ResponseEnum::SERVICE_REGISTER_SUCCESS);
}
Response::ok();// 无需返回 data,只返回 message 情形的快捷方法
Response::localize(200101);// 无需返回 data,message 根据响应码配置返回的快捷方法
Response::accepted();
Response::created();
Response::noContent();
public function fail()
{
return Response::fail();
}
public function fail()
{
return Response::fail('error');
}
public function fail()
{
return Response::fail('',ResponseEnum::SERVICE_LOGIN_ERROR);
}
Response::errorBadRequest();
Response::errorUnauthorized();
Response::errorForbidden();
Response::errorNotFound();
Response::errorMethodNotAllowed();
Response::errorInternal();
abort(500102,'登录失败');
// 返回数据
{
"status": "fail",
"code": 500102,
"message": "登录失败",
"data": {},
"error": {}
}
namespace App\Enums;
use Jiannei\Enum\Laravel\Support\Traits\EnumEnhance;
enum ResponseEnum: int
{
use EnumEnhance;
// 业务操作正确码:1xx、2xx、3xx 开头,后拼接 3 位
// 200 + 001 => 200001,也就是有 001 ~ 999 个编号可以用来表示业务成功的情况,当然你可以根据实际需求继续增加位数,但必须要求是 200 开头
// 举个栗子:你可以定义 001 ~ 099 表示系统状态;100 ~ 199 表示授权业务;200 ~ 299 表示用户业务...
case SERVICE_REGISTER_SUCCESS = 200101;
case SERVICE_LOGIN_SUCCESS = 200102;
// 业务操作错误码(外部服务或内部服务调用...)
case SERVICE_REGISTER_ERROR = 500101;
case SERVICE_LOGIN_ERROR = 500102;
// 客户端错误码:400 ~ 499 开头,后拼接 3 位
case CLIENT_PARAMETER_ERROR = 400001;
case CLIENT_CREATED_ERROR = 400002;
case CLIENT_DELETED_ERROR = 400003;
// 服务端操作错误码:500 ~ 599 开头,后拼接 3 位
case SYSTEM_ERROR = 500001;
case SYSTEM_UNAVAILABLE = 500002;
case SYSTEM_CACHE_CONFIG_ERROR = 500003;
case SYSTEM_CACHE_MISSED_ERROR = 500004;
case SYSTEM_CONFIG_ERROR = 500005;
}
// lang/zh_CN/enums.php
use App\Repositories\Enums\ResponseEnum;
use Jiannei\Enum\Laravel\Support\Enums\HttpStatusCode;
return [
// 响应状态码
ResponseEnum::class => [
// 标准 HTTP 状态码
HttpStatusCode::HTTP_OK->value => '操作成功',
HttpStatusCode::HTTP_UNAUTHORIZED->value => '授权失败',
// 业务操作成功
ResponseEnum::SERVICE_REGISTER_SUCCESS->value => '注册成功',
ResponseEnum::SERVICE_LOGIN_SUCCESS->value => '登录成功',
// 业务操作失败:授权业务
ResponseEnum::SERVICE_REGISTER_ERROR->value => '注册失败',
ResponseEnum::SERVICE_LOGIN_ERROR->value => '登录失败',
// 客户端错误
ResponseEnum::CLIENT_PARAMETER_ERROR->value => '参数错误',
ResponseEnum::CLIENT_CREATED_ERROR->value => '数据已存在',
ResponseEnum::CLIENT_DELETED_ERROR->value => '数据不存在',
// 服务端错误
ResponseEnum::SYSTEM_ERROR->value => '服务器错误',
ResponseEnum::SYSTEM_UNAVAILABLE->value => '服务器正在维护,暂不可用',
ResponseEnum::SYSTEM_CACHE_CONFIG_ERROR->value => '缓存配置错误',
ResponseEnum::SYSTEM_CACHE_MISSED_ERROR->value => '缓存未命中',
ResponseEnum::SYSTEM_CONFIG_ERROR->value => '系统配置错误',
],
],
];
shell
$ php artisan vendor:publish --provider="Jiannei\Response\Laravel\Providers\LaravelServiceProvider"
bash
cp vendor/jiannei/laravel-response/config/response.php config/response.php
json
{
"status": "error",
"code": 404,
"message": "Http not found",
"data": {},
"error": {
"message": "",
"exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
"file": "/home/vagrant/code/laravel-api-starter/vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php",
"line": 43,
"trace": [
{
"file": "/home/vagrant/code/laravel-api-starter/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php",
"line": 162,
"function": "handleMatchedRoute",
"class": "Illuminate\\Routing\\AbstractRouteCollection",
"type": "->"
},
{
"file": "/home/vagrant/code/laravel-api-starter/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"line": 646,
"function": "match",
"class": "Illuminate\\Routing\\RouteCollection",
"type": "->"
}
]
}
}