dingo/api项目包的安装及响应介绍

459 阅读1分钟

这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战

一、安装dingo/api项目包

dingo/api文档

1.1 安装dingo/api

安装命令:composer require dingo/api 在这里插入图片描述


出现下图,安装成功: 在这里插入图片描述


1.2 配置dingo/api

使用以下命令可以发布 API 的配置文件到 config 文件下: php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider" 在这里插入图片描述 发布完成后,在config文件夹下就会出现api.php配置文件:

在这里插入图片描述

这个是dingo/api配置文件。


1.3 Stand Tree标准树

可以查看dingo/api配置文档:

learnku.com/docs/dingo-…

我们这里配置如下:

API_STANDARDS_TREE=x
API_SUBTYPE=shop
API_PREFIX=api
API_VERSION=v1
API_NAME=shop
API_CONDITIONAL_REQUEST=false
API_STRICT=false
API_DEFAULT_FORMAT=json
API_DEBUG=true

在这里插入图片描述

二、端点

一个端点是一个路由的另一种说法。当讨论 API 的时候,很多人把访问的路由称作为一个端点。

2.1 创建端点:

$api = app('Dingo\Api\Routing\Router');


定义一个版本分组。这种定义方式有利于后续为相同端点新增多版本支持:

$api->version('v1', function ($api) {
    $api->get('index', [\App\Http\Controllers\TestController::class, 'index']);
});

在这里插入图片描述

2.2 新建一个Testcontroller:

php artisan make:controller TestController 在这里插入图片描述

2.3 命名路由和生成 URLs

    // 命名路由
    $api->get('nickname', ['as' => 'test.nickname', 'uses' => '\App\Http\Controllers\TestController@nickname']);

在这里插入图片描述

控制器方法:

    public static function nickname() {
        $url = app('Dingo\Api\Routing\UrlGenerator')->version('v1')->route('test.nickname');
        dd($url);
    }

在这里插入图片描述 浏览器输入:http://homestead.test/api/nickname 可以看到效果: 在这里插入图片描述 (tips:这边仅做了解,一般我们写纯api的话,很少会有像之前写模版那样使用到命名路由。)

2.4 查看所有路由

php artisan api:routes在这里插入图片描述

三、响应

3.1 更改数据库配置

learnku.com/docs/dingo-…

改下.env数据库配置:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

在这里插入图片描述

3.2 执行迁移文件

php artisan migrate 在这里插入图片描述 在这里插入图片描述 手动先添加2个用户为下面的例子做好铺垫: 在这里插入图片描述 修改TestController里的index方法:

public static function index() {
        return User::all();
    }

在这里插入图片描述 测试: 在这里插入图片描述

3.3 响应生成器

继承: 在这里插入图片描述 我们直接写到Controller.php控制器中: 在这里插入图片描述 1、响应一个数组

public function index() {
        // return User::all();
        // 响应一个数组
        return $this->response->array(['name' => 'lili', 'age' => 18]);
    }

在这里插入图片描述 在这里插入图片描述 2、 响应一个元素 在app文件夹下创建一个Transformers文件夹,写入UserTransformer.php

<?php 

namespace App\Transformers;

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

class UserTransformer extends TransformerAbstract {
    public function transform(User $user) {
        return [
            'id' => $user->id,
            'name' => $user->name,
            'email' => $user->email,
        ];
    }
}

在这里插入图片描述TestController.php写入:

public function index() {
        // return User::all();

        // 响应一个数组
        // return $this->response->array(['name' => 'lili', 'age' => 18]);

        /** 使用transformer */
        // 响应一个元素
        $user = User::find(1);

        return $this->response->item($user, new UserTransformer);

    }

在这里插入图片描述 效果: 在这里插入图片描述


在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。