davidnineroc/laravel-api-helper

This package is abandoned and no longer maintained. No replacement package was suggested.

laravel 开发 API 助手!

v1.1.9 2018-03-17 13:09 UTC

This package is not auto-updated.

Last update: 2020-08-14 17:15:57 UTC


README

StyleCI Latest Stable Version Total Downloads License

Requirement

  • PHP 7.1
  • Laravel 5.5.*

Installation & Usage

  • 使用composer安装
composer require tymon/jwt-auth 1.0.0-rc.2
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

Example

  • 快速完成登录相关 (基于 jwt-auth)
php artisan api:auth

make:apiAuth 会产生以下事件:

  • 发布config/jwt.php配置文件
  • .env文件生成秘钥
  1. 修改User模型使其实现JWTSubject接口
  2. 更新config/auth.php文件
  3. routes/api.php增加相关路由
  4. 生成AuthController,具体目录查看config/apihelper.php配置
  5. app/Exceptions/Handler::render增加拦截jwt,表单验证错误的异常抛出 php artisan make:apiAuth
  • 访问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();
    }
}

Recommend

  • 如果在控制器中找不到createedit方法,不要惊讶,因为API开发中不需要这两个方法,请配合使用Route::apiResource();
  • 使用Eloquent: API Resources转换模型数据

Errors

  • 出现模型修改错误
    • 确保config/auth.php=>providers=>users=>model配置正确了User模型

License

MIT license.