Laravel 安装 DingoAPI

什么是 DingoApi

这里有个视频教程,可以参考一下: https://learnku.com/courses/laravel-packag...

dingo/api 是一个 Lumen 和 Laravel 都可用的 RestFul 工具包,帮助我们快速的开始构建 RestFul Api。我们的目的是教会大家如何快速的搭建并使用这个包,更多的功能,还需要你仔细阅读 DingoApi 的 文档 来深入的学习和理解,这里有一份中英对照的翻译,或许能帮到你。

1. 安装

Laravel 5.5 以上的适配版本为dingo/api:v2.0.0-alpha2,所以我们需要安装这个 tag

$ composer require dingo/api:^2.0.0-alpha2

发现报错了:
file
dingo 的文档中有说明,现在这个包还处在开发阶段,没有一个稳定的 release 版本,dingo/api 依赖的 dingo/blueprint 与 phpunit 都依赖了 phpdocumentor/reflection-docblock 但是依赖的版本不同,导致出现了冲突。但是我们发现 dingo/blueprint的开发版本 dev-master 解决了冲突,可以正常安装,所以我们修改一下 composer.json
composer.json

.
.
.
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    },
    "minimum-stability" : "dev",
    "prefer-stable" : true
}

增加了两句:

  • "minimum-stability" : "dev" ——设定的最低稳定性的版本为 dev 也就是可以依赖开发版本的扩展包;
  • "prefer-stable" : true —— Composer 优先使用更稳定的包版本。

我们设定项目可以依赖开发版本扩展包,但是当依赖有稳定版本可以安装的时候,优先安装稳定版。

再次执行命令安装:

$ composer require dingo/api:^2.0.0-alpha2

file
看到 dingo/api 已经成功安装了。

2. 配置

先将 dingo 的配置文件 publish 出来

$ php artisan vendor:publish

file
执行成功后,我们会在 config 目录先看到 api.php 文件,打开文件我们可以看到所有的配置都是可以再 env 中修改的,下面我们主要讲解一下我们需要用到的配置

API_STANDARDS_TREE 和 API_SUBTYPE

API 版本的重要性,推荐的做法是使用 Accept 头来指定我们需要访问的 API 版本。API_STANDARDS_TREEAPI_SUBTYPE 这两个配置就和版本控制有关

Accept: application/<API_STANDARDS_TREE>.<API_SUBTYPE>.v1+json

API_STANDARDS_TREE 有是三个值可选

  • x 本地开发的或私有环境的
  • prs 未对外发布的,提供给公司 app,单页应用,桌面应用等
  • vnd 对外发布的,开放给所有用户

对于我们的项目,暂时可以选择 prs

API_STANDARDS_TREE=prs

API_SUBTYPE 一般情况下是我们项目的简称,我们的项目叫larabbs

API_SUBTYPE=larabbs

所以我们可以通过如下方式来访问不同版本的 API

访问 v1 版本
Accept: application/prs.larabbs.v1+json
访问 v2 版本
Accept: application/prs.larabbs.v2+json

API_PREFIX 和 API_DOMAIN

对于一个项目,通过前缀或者子域名的方式来区分开 API 与 Web 等页面访问地址是十分有必要的。假如正式上线的项目地址为 www.larabbs.com,我们可以为 API 添加一个前缀

API_PREFIX=api

通过 www.larabbs.com/api 来访问 API。
或者有可能单独配置一个子域名api.larabbs.com

API_DOMAIN=api.larabbs.com

通过 api.larabbs.com 来访问 API。

特别要注意的是:前缀和子域名,两者有且只有一个。我们选择 API_PREFIX 的方式。

API_VERSION

默认的 API 版本,当我们没有传 Accept 头的时候,默认访问该版本的 API。一般情况下配置 v1 即可。

API_STRICT

是否开启严格模式,如果开启,则必须使用 Accept 头才可以访问 API,也就是说直接通过浏览器,访问某个 GET 调用的接口,如https://api.larabbs.com/users,将会报错。必须使用 Postman 之类的调试工具,设置 Accept 后才可访问。可以根据需求开启,默认情况下为 false。

API_DEBUG

测试环境,打开 debug,方便我们看到错误信息,定位错误。
最后我们的配置如下
.env

.
.
.
API_STANDARDS_TREE=prs
API_SUBTYPE=larabbs
API_PREFIX=api
API_VERSION=v1
API_DEBUG=true

注意 .env 文件是不会提交到版本库中的,所以可以将以下代码复制到 .env.example 中,提交到版本库,方便其他环境部署。
.env.example

.
.
.
# dingo config
API_STANDARDS_TREE=
API_SUBTYPE=
API_PREFIX=
API_VERSION=
API_DEBUG=
本作品采用《CC 协议》,转载必须注明作者和本文链接
老哥以后是要做 CTO 的人,这些技术怎么能不会呢?
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!