mesak/laravel-api-response

构建一个Laravel API响应包

v1.3.2 2023-09-15 02:09 UTC

This package is auto-updated.

Last update: 2024-09-15 15:43:20 UTC


README

Laravel Api Response

使用统一回调方法控制API格式

安装

composer require mesak/laravel-api-response

或者,您可以直接在您的 composer.json 文件中将其作为依赖项引用

{
  "require": {
    "mesak/laravel-api-response": "^1.0.0"
  }
}

控制器

更改您的API控制器,扩展 Mesak\LaravelApiResponse\Http\Controllers\Controller

namespace App\Http\Controllers;

use Mesak\LaravelApiResponse\Http\Controllers\ApiController as BaseController;

class MainController extends BaseController
{

}

然后您可以返回所有响应

示例

使用分页

class MainController extends BaseController
{

    function index(Request $request)
    {
      return \App\Models\User::paginate(15);
    }
}

使用资源

class MainController extends BaseController
{

    function index(Request $request)
    {
      $users = \App\Models\User::paginate(15);
      return \App\Http\Resources\User::collection($users);
    }
}

使用异常

class MainController extends BaseController
{

  function index(Request $request)
  {
    $users = \App\Models\User::paginate(15);
    if( $users->isEmpty() )
    {
      throw new \Exception('No users found');
    }
    return \App\Http\Resources\User::collection($users);
  }
}

使用扩展异常

class MainController extends BaseController
{
  function index(Request $request)
  {
    $users = \App\Models\User::paginate(15);
    if( $users->isEmpty() )
    {
      throw new \Mesak\LaravelApiResponse\Exceptions\BaseException('No users found' ); //statusCode 500
    }
    return \App\Http\Resources\User::collection($users);
  }
}

使用自定义异常

创建您的自定义异常类 app/Exceptions/BadRequestException.php

namespace App\Exceptions;

class BadRequestException extends \Mesak\LaravelApiResponse\Exceptions\BaseException
{
  protected $errorCode = 400;
  protected $statusCode = 400;
  public function __construct($message = 'Bad Request')
  {
    parent::__construct($message);
  }
}

然后您可以在控制器中使用它

use App\Exceptions\BadRequestException;
class MainController extends BaseController
{
  function index(Request $request)
  {
    $users = \App\Models\User::paginate(15);
    if( $users->isEmpty() )
    {
      throw new BadRequestException(); //statusCode 400
    }
    return \App\Http\Resources\User::collection($users);
  }
}

不使用ApiController

如果您不想扩展 Mesak\LaravelApiResponse\Http\Controllers\ApiController,您可以使用

response()->success($data,$statusCode);

response()->error($data,$statusCode);

class MainController extends \App\Http\Controllers\Controller
{
  function index(Request $request)
  {
    $users = \App\Models\User::paginate(15);
    if( $users->isEmpty() )
    {
      return response()->error('no data',400);
    }
    $result = \App\Http\Resources\User::collection($users);
    return response()->success($result);
  }
}

自定义配置

您可以使用自定义的config.php来自定义API架构内容。

php artisan vendor:publish --tag=api-response --force