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 学习资源大全