- PHP 7.1
- Laravel 5.5.*
- 使用
composer
安装
composer require davidnineroc/laravel-api-helper dev-master --dev
- 发布配置文件 (开始之前你完全可以把
app\Http\Controllers
目录删除了,然后按需配置)
php artisan vendor:publish --provider=DavidNineRoc\ApiHelper\ApiServiceProvider --tag=config
- 发布 api 文档(/public/docs) 请务必修改(/public/docs/index.html)里的
url: "api.json"
中的api.json
加上你的域名访问
php artisan vendor:publish --provider=DavidNineRoc\ApiHelper\ApiServiceProvider --tag=docs
- 创建一个资源控制器
php artisan api:controller UserController --resource
- 快速完成登录相关 (基于 jwt-auth)
php artisan api:auth
make:apiAuth
会产生以下事件:
- 发布
config/jwt.php
配置文件.env
文件生成秘钥
- 修改
User
模型使其实现JWTSubject
接口- 更新
config/auth.php
文件- 在
routes/api.php
增加相关路由- 生成
AuthController
,具体目录查看config/apihelper.php
配置- 在
app/Exceptions/Handler::render
增加拦截jwt
,表单验证错误的异常抛出
- 访问
domain/api/auth/login
便可以进行登录了(更多路由,请查看routes/api.php
)
<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
class UserController extends ApiController
{
public function error()
{
$this->notFound('请求数据不存在');
}
public function login(Request $request)
{
/**
* 在这里进行了表单验证,不需要做什么,
* 因为已经在异常捕获了表单验证失败,
* 并且默认返回第一个错误消息
* 当然,你也可以使用表单请求验证,
* 注入一个表单请求类来完成验证
*/
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:6'
]);
// 身份验证失败
return $this->unAuthorized('账号或者密码错误');
}
public function store(Request $request)
{
$user = User::create($request->all());
return $this->created('用户注册成功', $user);
}
public function show(User $user)
{
if ($notAdmin = true) {
$this->forbidden('权限不足');
}
return $this->setCode(200)
->setMsg('SUCCESS')
->setData($user)
->toJson();
}
public function other()
{
$users = User::all();
// 有时,你可能需要返回更多的字段
$this->setCode(200)
->setMsg('SUCCESS')
->setData($users)
->setExtendField('count', $users->count())
->setExtendField('field', 'value')
->toJson();
}
}
- 如果在控制器中找不到
create
和edit
方法,不要惊讶,因为API
开发中不需要这两个方法,请配合使用Route::apiResource();
- 使用
Eloquent: API Resources
转换模型数据
- 出现模型修改错误
- 确保
config/auth.php=>providers=>users=>model
配置正确了User
模型
- 确保
The Laravel framework is open-sourced software licensed under the MIT license.