harishdpatel / apiresponse
这是基于Laravel项目的常用API响应结构。它可以在Laravel和Lumen中使用。
dev-master
2019-09-17 07:57 UTC
This package is auto-updated.
Last update: 2024-09-17 19:14:44 UTC
README
用于JSON响应的Laravel API响应结构类。在此包中,为不同的状态码提供了许多内置方法来处理API请求的响应。
如何使用
要使用此包,您只需要创建一个ApiResponse类的对象。
步骤 -1: 在您的控制器中
public $apiResponse = ''; /** * Create a new controller instance. * * @param ApiResponse $apiResponseClass */ public function __construct(ApiResponse $apiResponseClass) { $this->apiResponse = $apiResponseClass; }
步骤-2: 在您的方法中使用$apiResponse对象进行响应。
/** * Show the application dashboard. * * @return \Illuminate\Contracts\Support\Renderable */ public function index() { $posts = Post::get(); return $this->apiResponse->respondWithMessageAndPayload($posts, 'Posts has been retrieved successfully.'); }
您将收到如下所示的API响应
{ "success": true, "message": "Posts has been retrieved successfully.", "payload": [ { "id": 5, "category_id": 1, "user_id": 1, "title": "Laravel June Chapter2", "description": "Laravel June Chapter2", "updated_at": "2019-09-11 12:28:02", } ] }
还有许多其他有用的API响应方法。
return $this->apiResponse->respondWithData(array $data); return $this->apiResponse->respondWithMessage($message = "Ok"); return $this->apiResponse->respondWithError('Posts has been retrieved successfully'); return $this->apiResponse->respondWithMessageAndPayload($payload = null, $message = "Ok"); return $this->apiResponse->respondWithError($message = "Error", $e = null, $data = null); return $this->apiResponse->respondOk($message = "Ok"); return $this->apiResponse->respondCreated($message = "Created"); return $this->apiResponse->respondCreatedWithPayload($payload = null, $message = "Created"); return $this->apiResponse->respondUpdated($message = "Updated"); return $this->apiResponse->respondUpdatedWithPayload($payload = null, $message = "Updated"); return $this->apiResponse->respondDeleted($message = "Deleted"); return $this->apiResponse->respondDeletedWithPayload($payload = null, $message = "Deleted"); return $this->apiResponse->respondUnauthorized($message = "Unauthorized"); return $this->apiResponse->respondForbidden($message = "Forbidden"); return $this->apiResponse->respondNotFound($message = "Not Found"); return $this->apiResponse->respondValidationError($message = "Validation Error", $data = null); return $this->apiResponse->respondInternalError($message, $e); return $this->apiResponse->respondServiceUnavailable($message, $e); return $this->apiResponse->respondCustomError($message, $status_code, $e); return $this->apiResponse->respondNotImplemented($message = "Internal Error"); return $this->apiResponse->respondResourceConflict($message = "Resource Already Exists"); return $this->apiResponse->respondResourceConflictWithData($payload = null, $message = "Resource Already Exists", $responseCode = ResponseHTTP::HTTP_CONFLICT); return $this->apiResponse->respondWithFile($file, $mime); return $this->apiResponse->respondNoContent($message); return $this->apiResponse->respondBadRequest($message = "Bad Request"); return $this->apiResponse->respondHTTPNotAcceptable($message = "HTTP Not Acceptable"); return $this->apiResponse->respondExceptionError($status, $message, $status_code, $payload);
此包提供了以下响应结构,适用于所有方法
{
"success": true,
"message": "",
"payload": []
}
In Debug mode
{
"success": false,
"message": '',
"payload": '',
"debug": ''
}
然而,如果您想更改响应结构或添加包中不存在的新方法,您只需创建一个自定义响应类并扩展ApiResponse类。在自定义响应类中重写getResponseStructure,并使用该类到应用中。
例如:
namespace App\Http\Response; use HarishPatel\ApiResponse\ApiResponse; use Symfony\Component\HttpFoundation\Response; class CustomApiResponse extends ApiResponse { public function getResponseStructure($success = false, $payload = null, $message = '', $debug = null) { if ($success) { $data = [ 'message' => $message, 'data' => $payload ]; } else { $data = [ 'error' => [ 'code' => Response::$statusTexts[$this->getStatusCode()], 'http_code' => $this->getStatusCode(), 'message' => $message, ] ]; } return $data; } }
许可协议
laravel-api-response是开源软件,受MIT许可协议许可。