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

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

本篇主要講述,如何用 Laravel 快速開發 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 則表示正常運行的,數據表創建成功。

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

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

修改 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 目錄下新建)。

創建新數據表 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>

去除 api 的 namespace 指定

接口測試驗證

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

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

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

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