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许可协议许可。