It has been 526 days since the last update, the content of the article may be outdated.

lumen + dingo 搭建 api 服务器

网上现在关于 lumen 的教程还是蛮少的,不过很少有初级 PHP 人员直接接触 lumen,估计这也是一个问题吧!作为一个菜鸟,因为公司项目重构,所以我走上了 lumen 的流行


lumen lumen git 地址 全部关于 lumen 的介绍以及说明都有


至于 dingo/api 是一个基于 larveral 和 lumen 的 api 工具 可以帮助我们快速构建 api 服务


dingo/api dingo/api git 地址 全部关于 dingo 组件


安装

首先 ,通过使用 composer 安装 laravel 安装器:

plaintext
1
composer global require "laravel/lumen-installer"

然后我们通过安装器进行安装

plaintext
1
lumen new blog

其次我们也可以通过 composer 创建项目

plaintext
1
composer create-project --prefer-dist laravel/lumen blog

本地开发环境

如果你本地安装了 PHP,并且你想使用 PHP 内置的服务器来为你提供应用服务,php -S localhost:8000 -t public 命令。该命令会在 http://localhost:8000 上启动开发服务器

lumen 和 laravel 虽然是同一个框架系列但是不属于同样的结构 lumen 更像是一个 laravel 的儿子,一个专属于 api 开发的框架 所以在文件结构上的处理和方式也有很多不同

Lumen 框架所有的配置信息都是存在 .env 文件中。一旦 Lumen 成功安装,你同时也要 配置本地环境。

dingo install

首先去 dingo 的 git 上面查看当前版本 我这里安装的是 2.2 以上的版本

至于 dingo 的版本安装失败 请参考 https://learnku.com/courses/laravel-package/api-development-kit-dingoapi/

安装 dingo 有两种方法 这两种方法基本上百度都能找到

一种是在 composer.json 文件中进行修改 然后 composer update:

plaintext
1
2
3
"require": {
"dingo/api": "^2.2"
}

另一种就是直接使用 composer 直接将包引入

plaintext
1
composer require dingo/api

当我们安装 dingo 之后我们需要对 dingo 进行注册 我们使用 laravel 需要将配置文件引入进来,当然我们当前使用的是 lumen

plaintext
1
$app->register(Dingo\Api\Provider\LumenServiceProvider::class);

关于 Facades

API 自带了两个 Facade ,你可以自己选择使用

Dingo\Api\Facade\API

这个调度器的 Facade ,并提供了一些好用的辅助方法

Dingo\Api\Facade\Route

你可以使用这个 Facade 来获取 API 的当前路由、请求、检查当前的路由名称等

Dingo 配置


大部分的配置信息都是预先配置好了的,为的是让你能快速上手你的 API 项目。你可以通过 ·env 文件来自定义大部分配置。但是,有一些配置微调需要你发布配置文件(Laravel)或者在 bootstrap/app.php 文件中配置 (Lumen)。你也可以使用 AppServiceProvider 中的 boot 方法来做设置。

Standards Tree 标准树

这有三个不同的树 x,prs, 和,vnd. 你使用的标准树需要取决于你开发的项目

关于版本描述,请自行参考官网配置

配置.env

plaintext
1
API_STANDARDS_TREE=vnd

子类型通常是应用程序或项目的短名称,都是小写的。

plaintext
1
API_SUBTYPE=myapp

前缀和子域

plaintext
1
2
API_PREFIX=api
API_DOMAIN=api.myapp.com

当然域名和前缀只能用一个

版本号

plaintext
1
API_VERSION=v1
最后配置格式
plaintext
1
2
3
4
5
6
# dingo 
API_STANDARDS_TREE=prs
API_SUBTYPE=package
API_PREFIX=api
API_VERSION=v1
API_DEBUG=true

这几个配置非常的重要, API 版本的切换会利用到这些配置,不配置是会报错的。

接下来就可以进行接口测试了。具体测试 基本上官网文档都讲解的非常明白。具体请自行参考官网配置