「 原創 」Laravel 5.8 API 開發實戰(一)

Laravel 為何?我就不細說了,可以自行查看官網 https://laravel.com/,具體如何安裝,也可以查看官網安裝教程,再此亦不贅述。

本篇主要講述,如何用 Laravel 快速開發 API,跑通無授權的接口。

「 原創 」Laravel 5.8 API 開發實戰(一)

數據庫配置

打開 .env 文件,修改數據庫配置信息。config / database.php 可以配置 prefix ,charset 等信息(根據自身需求,修改 MySQL 數據庫信息 [ 數據庫,用戶名,密碼 ] )

<code>DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=makeit
DB_USERNAME=root
DB_PASSWORD=123456/<code>

數據表設計

所有表的設計默認都放在 database / migrations 目錄下,laravel 默認安裝後為我們創建了 user 與 password_resets 兩張表。

運行 php artisan migrate 命令,出現 Migrated 則表示正常運行的,數據表創建成功。

「 原創 」Laravel 5.8 API 開發實戰(一)

如果出現如下圖所示的內容,則表示有部分表創建失敗了(user 表是成功的了)

「 原創 」Laravel 5.8 API 開發實戰(一)

出現該錯誤的原因是 Laravel 5.4 之後修改了數據庫默認字符集,現在是 utf8mb4。上述錯誤的解決方案有 2 種(如下圖所示 - 第一種方案看圖片標題):

「 原創 」Laravel 5.8 API 開發實戰(一)

修改 app/Providers/AppServiceProvider.php

第二種方案為 修改 config/database.php 配置 選項,將 MySQL 的 engine 默認為 null 的修改為 InnoDB。(參考資料:https://laravel-news.com/laravel-5-4-key-too-long-error)

<code>'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'restaurant'),
    'username' => env('DB_USERNAME', 'root'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => 'InnoDB',
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
]/<code>

接下來創建一個新的數據表,運行 php artisan make:model Platforms -m,創建新數據表 platforms(當然,也可以手動在 database/migrations 目錄下新建)。

「 原創 」Laravel 5.8 API 開發實戰(一)

創建新數據表 platforms

依葫蘆畫瓢,根據默認提供的 users 表,創建 platforms 表字段

<code>Schema::create('platforms', function(Blueprint $table) {
    $table->increments('id')->comment('平臺ID');
    $table->string('key')->comment('平臺密鑰');
    $table->string('name')->comment('平臺名稱');
    $table->tinyInteger('open')->default(0)->comment('是否開啟');
    $table->timestamps();
});/<code> 

實現簡單接口

首先當然得先啟動服務器

<code>php artisen serve/<code>

緊接著創建一控制器(如下的命令,會在 Http/Controllers 目錄下創建 Api/v1 目錄,並生成 UserController 控制器)

<code>php artisan make:controller Api\v1\UserController/<code>

創建完控制器後,我們來改改這個控制器,新增一個 index 方法,並使其返回 Json 數據。

<code>json([
            'data' => [],
            'ret' => []
        ]);
    }
}/<code>

控制器有了,接下來要訪問,我們要修改路由文件,增加一條簡單路由,使其能正常訪問,具體修改如下所示:

<code> 'v1'], function(Registrar $api) {
    $api->get('/user', 'Api\v1\UserController@index');
});/<code>

上述修改路由,有另外一種方式可以修改 action 參數,該方式需要修改 RouteServiceProvider 服務提供器,去除 api 的 namespace 指定。

<code> 'v1'], function(Registrar $api) {
    $api->get('/user', Api\UserController::class.'@index');
});/<code>
「 原創 」Laravel 5.8 API 開發實戰(一)

去除 api 的 namespace 指定

接口測試驗證

瀏覽器輸入:http://localhost:8000/api/v1/user

或者採用第三方工具 postman,restlet 等進行接口訪問測試。

「 原創 」Laravel 5.8 API 開發實戰(一)

至此,一個無授權認證的基於 Larave 5.8 的接口就跑通了 ......

那需要授權認證的接口又該如何實現呢?


分享到:


相關文章: