一、安装使用
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'); } }