maxhill/api

Laravel Api 包

1.0.7 2016-09-11 20:11 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:25:34 UTC


README

我为每个项目创建的API设置都令人头疼。现在简化为一个插件。

  • 它提供 JSON-webtoken 身份验证(使用出色的 tymondesigns/jwt-auth)。
  • 它提供 模型转换(使用出色的 fractal-package
  • 它还提供了一些甜美的 api-helper 方法,用于返回资源、错误等。

安装

  1. 添加服务提供者。
// config/app.php
...
Maxhill\Api\ApiServiceProvider::class,
...
  1. 添加路由中间件。
// app/Http/Kernel.php
...
'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
...
  1. 发布 vendors。
$ php artisan vendor:publish --provider="Maxhill\Api\ApiServiceProvider"
$ php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
  1. 生成 jwt-secret。
$ php artisan jwt:generate
  1. 移除 csrf-token 中间件。
// app/Http/Kernel.php
'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken',

使用方法

身份验证

  • 使用路由中间件

要求用户登录才能访问路由

Route::post('whatever', [
    'uses' =>'WhateverController@index',
    'middleware' => 'jwt.auth'
]);

阅读更多

  • 使用 authenticate 路由

身份验证已设置。只需将用户名和密码发送到 /authenticate

您可以在配置文件 config/api.php 中将 /authenticate 路由更改为您想要的任何内容。

控制器

### 扩展 ApiController。

确保您的 api-控制器扩展 Maxhill\Api\Http\Controllers\ApiController; 而不是默认的 App\Http\Controller

### 使用转换器进行返回。

示例用户模型转换器;

<?php
# app/Transformers/UserTransformer.php

namespace App\Transformers;

use App\User;
use League\Fractal\TransformerAbstract;

class UserTransformer extends TransformerAbstract
{

    /**
     * Turn this item object into a generic array
     *
     * @param User $user
     * @return array
     */
    public function transform(User $user)
    {
        return [
            'id' => (int)$user->id,
            'name' => $user->name,
            'email' => $user->email
        ];
    }

}

使用 UserTransformer

    # app/Http/Controllers/WhateverController.php

    public function index()
    {
        $users = User::all();
        return $this->respondWithCollection($users, new UserTransformer);
    }

### ApiController - 方法

  • user() // 返回 false 或从身份验证令牌解析的用户对象

##### 响应数据

  • respondWithItem()
  • respondWithCollection()
  • respondWithArray()

##### 错误响应

  • respondWithError()
  • errorForbidden()
  • errorInternalError()
  • errorNotFound()
  • errorUnauthorized()
  • `errorWrongArgs()