laravel dingoapi插件使用 快速搭建api

一、安装使用

1.首先composer里面引用,(可在github中查找 dingo),引用之后直接composer update

"require": {
    "php": "^7.1.3",
    "fideloper/proxy": "^4.0",
    "laravel/framework": "5.6.*",
    "laravel/tinker": "^1.0",
    "dingo/api": "v2.0.0-alpha2" //dingoapi
},

2. 在route路由中添加,可以在路由文件夹(route)添加一个version文件夹,里面新建V1.php 路由文件

$api = app('Dingo\Api\Routing\Router'); //添加这句话

$api->version('v1',[
    'namespace' => 'App\Api\Controllers\V1',
    'where' => [
        'id' => '\d+'
    ],
    'middleware' => [
        'token'
    ]
],function ($api){ //function($api) 自动在路由前面就加上了 /api/xxx/xxx
    // 测试route是否通
    $api->get('auth/users',function (){
        return [
            'msg' => 'haha'
        ];
    });
    // 获取user表内容
    $api->group([
        'prefix' => 'user',
        'namespace' => 'Users'
    ],function () use ($api){
        // 获取所有用户信息
        $api->get('index','UserController@index');
        // 添加用户
        $api->post('/','UserController@create');
        // 获取单个用户信息
        $api->get('store/{id}','UserController@store');
        // 修改某个用户
        $api->post('{id}','UserController@update');
    });
});

3.添加BaseController 然后 新建的controller继承这个controller

<?php
namespace App\Api\Controllers;

use App\Http\Controllers\Controller;
use Dingo\Api\Routing\Helpers;

class BaseController extends Controller{
    use Helpers;
}

继承

<?php
namespace App\Api\Controllers\V1\Users;

use App\Api\Controllers\BaseController;

class UserController extends BaseController {
    //列出所有用户
    public function index()
    {
        $data = DB::table('users')->get();
        return $this->response->error($data); // 继承basecontroller之后 可以使用dingo门面里面的方法
    }

此时已经可以使用dingoapi了

二、使用transformer

1.新建Transformers文件夹 新建UserTransformer.php

<?php
namespace App\Api\Transformers;

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

class UserTransformer extends TransformerAbstract{

    public function transform(User $item){
        return [ //要返回的数据
            "id" => $item->id,
            'name' => $item->name,
            'email' => $item->email
        ];
    }
}

2.在UserController里面继承UserTranformer

<?php
namespace App\Api\Controllers\V1\Users;

use App\Api\Controllers\BaseController;
use App\Api\Models\User;
use App\Api\Transformers\UserTransformer;

class UserController extends BaseController {
    //列出所有用户
    public function index()
    {
        $user = User::get();
        // collection 返回数据
        return $this->response->collection($user,new UserTransformer());
    }
// 修改某个用户
public function update(Request $request,$id){
    $user = User::findorFail($id);
    $a = $user->update($request->all());
    if ($a){
        // item 返回修改后的数据
        return $this->response->item($user,new UserTransformer());
    }else{
        // error 返回错误值和错误提示
        return $this->response->error('修改失败','412');
    }
}


猜你喜欢

转载自blog.csdn.net/genziisme/article/details/80594965