maxhill / api
Laravel Api 包
1.0.7
2016-09-11 20:11 UTC
Requires
- php: >=5.5.9
- laravel/framework: 5.2.*
- league/fractal: ^0.13.0
- tymon/jwt-auth: 0.5.*
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 方法,用于返回资源、错误等。
安装
- 添加服务提供者。
// config/app.php ... Maxhill\Api\ApiServiceProvider::class, ...
- 添加路由中间件。
// app/Http/Kernel.php ... 'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken', 'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken', ...
- 发布 vendors。
$ php artisan vendor:publish --provider="Maxhill\Api\ApiServiceProvider" $ php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
- 生成 jwt-secret。
$ php artisan jwt:generate
- 移除 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()