lordsling/api-response
dev-main
2021-11-07 22:08 UTC
This package is not auto-updated.
Last update: 2024-09-24 09:48:54 UTC
README
一组从API返回响应的辅助工具,以便更清晰地表达
安装
通过Composer安装此包
$ composer require lordsling/api-response
不需要额外的设置。辅助文件通过"autoload"属性自动加载composer.json
文件
配置
使用Artisan命令发布配置文件
$ php artisan vendor:publish --provider="Lordsling\ApiResponse\ApiResponseServiceProvider"
检查
config/api-response.php
并阅读其中的注释,如果需要的话。
示例响应API
{ "success": true, "payload": null, "errors": [] }
用法
2xx 成功 "success": true
HTTP 200 OK
/** * @param null $payload */ return ok($payload);
HTTP 200 OK
/** * @param null $payload */ return error($payload);
HTTP 200 OK
/** * @param null $payload */ return fail($payload);
HTTP 201 Created
/** * @param null $payload */ return created($payload);
HTTP 202 Accepted
/** * @param null $payload */ return accepted($payload);
HTTP 204 No Content
/** */ return noContent();
3xx 重定向
HTTP 301 Moved Permanently
/** * @param $newUrl */ return movedPermanently($newUrl);
HTTP 302 Found
/** * @param $url */ return found($url);
HTTP 303 See Other
/** * @param $newUrl */ return seeOther($newUrl);
HTTP 307 Temporary Redirect
/** * @param $tempUrl */ return temporaryRedirect($tempUrl);
4xx 客户端错误 "success": false
HTTP 400 Bad Request
/** * @param null $payload */ return badRequest($payload);
HTTP 401 Unauthorized
/** * @param null $payload */ return unauthorized($payload);
HTTP 402 Payment Required
/** * @param null $payload */ return paymentRequired($payload);
HTTP 403 Forbidden
/** * @param null $payload */ return forbidden($payload);
HTTP 404 Not Found
/** * @param null $payload */ return notFound($payload);
HTTP 405 Method Not Allowed
/** * @param null $payload */ return methodNotAllowed($payload);
HTTP 406 Not Acceptable
/** * @param null $payload */ return notAcceptable($payload);
HTTP 410 Gone
/** * @param null $payload */ return gone($payload);
HTTP 413 Payload Too Large
/** * @param null $payload */ return payloadTooLarge($payload);
HTTP 422 Unprocessable Entity
/** * @param null $payload */ return unprocessableEntity($payload);
HTTP 426 Upgrade Required
/** * @param null $payload */ return upgradeRequired($payload);
HTTP 429 Too Many Requests
/** * @param null $payload */ return tooManyRequests($payload);
5xx 服务器错误 "success": false
HTTP 500 Internal Server Errors
/** * @param null $payload */ return internalServerError($payload);
HTTP 501 Not Implemented
/** * @param null $payload */ return notImplemented($payload);
HTTP 502 Bad Gateway
/** * @param null $payload */ return badGateway($payload);
HTTP 503 Service Unavailable
/** * @param null $payload */ return serviceUnavailable($payload);
HTTP 504 Gateway Timeout
/** * @param null $payload */ return gatewayTimeout($payload);
HTTP 507 Insufficient Storage
/** * @param null $payload */ return insufficientStorage($payload);
可用方法
withHeaders
/** * @param array $headers */ ->withHeaders([ ['HeaderName' => 'value'], //... ]);
withErrors
/** * @param array $headers */ ->withErrors([ [ 'code' => 'code', 'message' => 'message' ], //... ]);
withMeta
/** * @param $request * @param null $callback */ ->withMeta($request, function ($request) { return ['query' => $request->query()]; });
withValidation
App/Exceptions/Handler.php
public function render($request, Throwable $e) { if ($e instanceof ValidationException) { return unprocessableEntity()->withValidation($e); } }
withTrace
App/Exceptions/Handler.php
public function render($request, Throwable $e) { return internalServerError() /** * @param $exception */ ->withTrace($e); }
withMergeErrors
/** * @param ...$errorCodes */ ->withMergeErrors(1000, 1001, 1002, /*...*/); or ->withMergeErrors([1000, 1001, 1002, /*...*/]);
addError
/** * @param $code * @param string|null $message * @param array|null $details */ ->addError(1000, 'Custom error message', ['details' => '...', //...]);
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。