Dingo API 安装 — iBrand Laravel API 0.6

 阅读约 9 分钟
重要通知: Laravel + 小程序的开源电商版本源码已经在 github 上拉,欢迎提交 issue 和 star :)
开源电商 Server 端: Laravel API源码
开源电商 client 端:小程序源码

Dingo API 简介

Dingo API 为开发者提供了一整套工具以便帮助你轻松、快捷的构建自己的API,这些工具包括:

  • 多用户认证适配
  • API版本
  • API请求频率限制
  • 响应转化和格式化
  • 错误及异常处理
  • 内部请求
  • API文档

安装

系统要求

根据 dingo/apicomposer.json 文件,至少需要 PHP7.0 及以上版本。

安装

手动修改 composer.jsonrequire 最后一行添加 "dingo/api": "2.0.0-alpha1",然后执行 composer update 命令。

"require": {
    "dingo/api": "2.0.0-alpha1"
}
如果安装速度较慢,请使用国内镜像源:phpcomposer
Packagist 镜像使用方法
源码已经默认配置国内镜像源

图片描述

composer update 命令会更新 composer.json 中所有的 package

Laravel

如果你想在配置文件中改变一些配置,你可以使用下面的 Artisan 命令发布配置文件

php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"

图片描述

Facades

这个包提供了两个 facades。你可以随意添加任何一个

Dingo\Api\Facade\API

这是一个用于api调度的 facade,当然,它也为这个包的其他方法提供辅助方法。

Dingo\Api\Facade\Route

这是一个用于 API 路由的 facade,可以用作获取当前路由,请求,检查当前路由名称等。

目前我们暂时不需要使用这两个 facades.

配置

config/api.php 已经提供了一套默认的配置,关于 dingo/api 的各项配置项可以通过官方文档(Configuration)了解。

本次教程中,我们只需要通过 .env 文件添加以下两项配置即可:

API_PREFIX=api     #前缀名称
API_DEBUG=true     #开启debug模式
请自行在 .env 文件中添加,.env 文件是不加入 git 进行版本控制。

Hello World

接下来将通过 API 来返回 Hello World 来验证 Dingo API 知否正确安装成功。

注册路由

server module 创建 RouteServiceProvider class 文件和 api.php

api-tutorial-source
├── app
├── ...
└── modules
    └── server
        ├── composer.json
            ├── src
                ├── routes
                ├   └── api.php
                └── Providers
                    ├── ServerServiceProvider.php
                    └── RouteServiceProvider.php

RouteServiceProvider code

mapApiRoutes() 方法使用 dingo/api 的专属的路由实例来创建一个版本分组

namespace iBrand\Server\Providers;


use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;

class RouteServiceProvider extends ServiceProvider
{

    /**
     * This namespace is applied to your controller routes.
     *
     * In addition, it is set as the URL generator's root namespace.
     *
     * @var string
     */
    protected $namespace = 'iBrand\Server\Http\Controllers';

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @return void
     */
    public function boot()
    {
        //

        parent::boot();
    }

    /**
     * Define the routes for the application.
     *
     * @return void
     */
    public function map()
    {
        $this->mapApiRoutes();
    }


    /**
     * Define the "api" routes for the application.
     *
     * These routes are typically stateless.
     *
     * @return void
     */
    protected function mapApiRoutes()
    {

        $api = app('Dingo\Api\Routing\Router');

        $api->version('v1',
            ['middleware' => 'api', 'namespace' => $this->namespace], function ($router) {
                require __DIR__ . '/../routes/api.php';
            });
    }
}

注册 RouteServiceProvider

两种注册方式

第一种:在 config/app.phpproviders 添加

iBrand\Server\Providers\RouteServiceProvider::class,

第二种:在 server module 中的 ServerServiceProviderregister() 方法中注册

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->register(RouteServiceProvider::class);
    }

在教程中采用第二种注册方式。

添加路由

api.php 中添加一条路由,直接返回 hello world 内容

$router->get('helloworld', function (){
    return 'hello world';
});

完成

浏览器输入 http://api.ibrand.test/api/helloworld

图片描述

小结

本章知识点:

  • Dingo API 安装配置
  • 注册 Dingo 专属版本路由组
  • 添加 API 路由

参考资料:

Creating API Endpoints

阅读 1.2k更新于 10月14日
推荐阅读
果酱产品日志
用户专栏

果酱是一个内部孵化项目,包含了果酱小店,果酱互动,果酱学院,果酱圈子等系统成为果酱社区会员,即刻...

48 人关注
40 篇文章
专栏主页
目录