安装 DingoAPI
点赞
0

什么是 DingoApi

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

1. 安装

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

$ composer require dingo/api:2.0.0-alpha1

我们发现报错了
file
dingo 的文档中有说明,现在这个包还处在开发阶段,没有一个稳定的 release 版本,所以我们需要打开 composer.json

> subl ~/Code/larabbs/composer.json

手动添加 "dingo/api": "2.0.0-alpha1"

"require": {
    "php": ">=7.0.0",
    .
    .
    .
    "viacreative/sudo-su": "~1.1",    # <--- 注意这里需要添加逗号
    "dingo/api": "2.0.0-alpha1"   # <--- 这里没有逗号哦
},

执行 composer update

$ composer update

file
省略一些细节
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=
评论数量: 0

游客 游客

0
点赞
617
浏览
0
评论

贡献 198
JeffreyBool
程序员是一条不归路,当我走上这条路我并不后悔,因为我认识了许多帮助我的朋友。热爱生活,热爱code!