jack.savich/laravel-api-skeleton

此包已被废弃,不再维护。未建议替代包。

此包包含 Laravel 骨架 API 应用程序

v1.1.0 2016-11-04 14:09 UTC

This package is not auto-updated.

Last update: 2021-02-20 00:04:25 UTC


README

此包提供 Laravel 骨架 API,包括 BaseController、Request 和 json 格式响应

安装

Composer 需求

savich/laravel-api-skeleton

注册服务提供者

'providers' => [
...
Savich\ApiSkeleton\Providers\ApiServiceProvider::class,

注册中间件

protected $routeMiddleware = [
...
'api.auth' => \Savich\ApiSkeleton\Middleware\Auth::class,

使用方法

控制器

use Savich\ApiSkeleton\Controllers\ApiController;

class YourController extends ApiController

路由

在您的路由文件中指定为路由组指定的中间件,用于检查用户是否通过 API 进行身份验证

// on routes file

Route::group(['middleware' => 'api.auth'], function () {
    // your routes ...
});

请求

所有 API 请求都应继承 ApiRequest 以实现统一的错误格式

use Savich\ApiSkeleton\Requests\ApiRequest;

class YourRequest extends ApiRequest

功能

响应

要生成 API 响应,只需在控制器方法中调用 ApiController 的 send() 即可,它提供便捷的响应表示方式

use Savich\ApiSkeleton\Controllers\ApiController;
use Savich\ApiSkeleton\Response\ResponseInterface;

class YourController extends ApiController
{
    public function index()
        {
            return $this->send(/* params */); 
        }

响应看起来像这样

{
  "status": 1,
  "message": null,
  "token": null,
  "result": null // here will be your `params`
}

身份验证

此包提供通过 API 进行简单身份验证的功能。您只需使用 TokenTrait,即可使登录变得简单且愉快。

示例。

use Savich\ApiSkeleton\Controllers\ApiController;
use Savich\ApiSkeleton\Controllers\Mixins\TokenTrait;
use Savich\ApiSkeleton\Response\ResponseInterface;

class AuthController extends ApiController
{
    use TokenTrait;

    public function __construct(ResponseInterface $response)
    {
        parent::__construct($response);
    }

    /**
     * API Login, on success return JWT Auth token
     * @param LoginRequest $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function login(LoginRequest $request) // you can make your own request
    {
        $user = $this->getUser($request->only('email', 'password'));

        if (!$user) {
            $this->addError('Invalid credentials');

            return $this->send();
        }

        return $this->attemptToken($user);
    }
}