API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工做機制的細節。php
Lumen 是一個由 Laravel 組件搭建而成的微框架, 由 Laravel 官方維護. Lumen 爲速度而生, 是當前最快的 PHP 框架之一, 甚至比相似的微框架 Silex 速度還要快.
從上面能夠看出 Lumen 是去除了不少 配置和可自定義的選項的 Laravel。也就是說若是你先了解了 Laravel 就很容易掌握 lumen,在博客裏有不少 laravel 的文章,你們能夠搜一下去學習 。html
首先要把 lumen 配置好,加入須要的 JWT,dingo 等組件。但在咱們的項目中這些都是配置好的,這些你都不用擔憂。laravel
打開項目目錄
app/Http/routes.phpgit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
$api = app('Dingo\Api\Routing\Router');
$api->version('v1.0', ['namespace' => 'App\Http\V1_0\Controllers'], function ($api) {
//物品分類列表
$api->get('category', 'CategoryController@index');
//驗證項目是否運行成功
$api->get('test', 'ApitestController@test');
// 需提供 JWT
$api->group(['middleware' => 'api.auth', 'providers' => 'jwt'], function ($api) {
});
});
|
上面是最初打開看到的界面,不少人可能不理解是什麼意思。去看 lumen 文檔也和上面不太同樣。事實上上面並非 lumen 的原生語法,上面用到的是 dingo API。能夠去如下連接瞭解 dingo Wiki documentation。我在這裏簡單介紹下。github
1
2
|
$api->get('test', 'ApitestController@test');//訪問本地地址/api/test,調用的方法是 ApitestController 的 test 方法
|
而在這個裏面數據庫
1
2
3
4
|
$api->group(['middleware' => 'api.auth', 'providers' => 'jwt'], function ($api) {
});
|
寫下的路由必須經過 JWT 驗證,就是必需要登陸獲取 token。你們能夠去 JWT 官網或搜一下相關文章瞭解 token 機制。 jwt WIKI能夠了解如何獲取和解析 token。
路由要遵循 restful url 規範。你們能夠看下這篇文章 restful url
用到最多的是 laravel resource 路由編程
還記得上步裏提到的那個路由嗎,在那個路由調用的是 ApitestController 的 test 方法。接下來咱們就來寫一下這個控制器
打開項目目錄
app/Http/V1_0/Controllers,咱們項目的控制器都寫在這個文件夾下,根據須要新建 ApitestControllerapi
1
2
3
4
5
6
7
8
9
10
|
<?php namespace App\Http\v1_0\Controllers;
class ApiTestController extends ApiController
{
public function test()
{
return $this->response()->array(['api 項目運行成功']);
}
}
|
在這裏有個 test 方法,就是咱們在上一步的路由中訪問的方法。也就是說當咱們訪問本地地址/api/test 時就會迴應 ‘api 項目運行成功’。到此咱們的 API 通過的流程就基本完成了。不過可能會有不少同窗會問數據庫呢?事實上數據庫也只是爲這個 Api 提供數據而已。restful
在這裏咱們將展現數據庫的數據如何在控制器中使用。首先新建 migration,你們參考這篇文章。有的時候還要填入數據,你們
參考這篇文章
而後咱們要創建一個 Model。假設咱們如今有一個 users 表。
打開 app/Entity 文件夾 新建文件 User.phpapp
1
2
3
4
5
6
7
8
9
10
|
<?php namespace App\Entity;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $hidden = ['password'];
protected $fillable = ['nation_id', 'mobile'];
}
|
$fillable 是容許批量操做的白名單,具體的你們能夠去看看官網。
接下來咱們就可使用 users 這個表了。方法改成
1
2
3
4
5
6
|
public function test()
{
$users = User::all();
return $this->response->collection($users, new UserTransformer);
}
|
在前面加上 use App\Entity\User;
這裏用到了 Transformer,必需要新建個文件,能夠看下這篇文章。若是不想建,能夠直接 return $users;這樣當訪問鏈接時會返回 users 表的數據。瞭解更多,能夠去看官方文檔的數據庫一節。不少時候爲了方便,咱們分離數據庫層,能夠參考這篇文章。
在這裏我簡單介紹了下構建 API 的步驟,主要是給你們的學習帶來方便,文章裏的連接和官方文檔,你們均可以看一下,相信你會很快學會的。若是你感受文章有什麼問題或者你還又什麼困惑的話,歡迎你們在下面留言。附laravel 學習資源大全